2011-07-04 12 views
5

में चेतावनी "पैरामीटरयुक्त अधिभारित निहित विधियों को दृश्य सीमा के रूप में दिखाई नहीं दे रहा है" चेतावनी @SuppressWarnings(???) का उपयोग करके इस विशिष्ट चेतावनी को दबाना संभव है? (मैं इस रूपांतरण को एक दृश्य के रूप में उपयोग करने का इरादा नहीं रखता, इसलिए चेतावनी उपयोगी नहीं है।)स्केल

+0

जैसा कि @ जीन-फिलिप ने बताया कि यह [इस सवाल] का एक संभावित डुप्लिकेट है (http://stackoverflow.com/questions/3506370/is-there-an-equivalent-to-suppresswarnings-in-scala) –

उत्तर

6

दुर्भाग्य से नहीं। संकलक @SuppressWarnings को अनदेखा करता है। this question भी देखें।

+0

धन्यवाद । बहुत बुरा... –

1

जबकि आप @SuppressWarnings के माध्यम से इस चेतावनी को दबा नहीं सकते हैं, तो आप बस उस ओवरलोड का नाम बदल सकते हैं जो संकलक चेतावनी दे रहा है। यदि आप इसका नाम बदलना नहीं चाहते हैं क्योंकि इसे भी स्पष्ट रूप से बुलाया जाता है, तो विधि को गैर-अंतर्निहित बनाएं और एक और (अलग-अलग नाम) अंतर्निहित रूपांतरण जोड़ें जो आगे के लिए पूर्व में है।

दूसरे शब्दों में, आप उदाहरण के द्वारा यह कर देना चाहिए:

class MyClass 
object MyClass { 
    implicit def myConv: MyClass = error("TODO") 
    implicit def myConv[X](value: X): MyClass = error("TODO") 
} 
इस में

:

class MyClass 
object MyClass { 
    implicit def myConv: MyClass = error("TODO") 
    def myConv[X](value: X): MyClass = error("TODO") // made it non implicit 
    implicit def myConv2[X](value: X): MyClass = myConv(value) // renamed so that it is not an overload anymore 
} 

ध्यान दें कि चेतावनी केवल स्केला 2.9.x में उत्सर्जित होता है, यह डिफ़ॉल्ट नहीं कर रहा है स्केल 2.10 में अब उत्सर्जित है (लेकिन वास्तविक समस्या जो चेतावनी बात कर रही है वह अभी भी है - चेतावनी संदेश केवल हटा दिया गया था क्योंकि इसे टाइप क्लास उपयोग में नई वृद्धि के साथ बहुत शोर माना जाता था)।