2015-09-24 7 views
6

मैं स्केला कोड के कुछ नमूने जहां कोड की कई पंक्तियों कोई घुंघराले ब्रेसिज़ के साथ कोड का एक खंड के रूप में उपयोग किया जाता है देखा है, उदाहरण के लिए:को छोड़ते हुए घुंघराले ब्रेसिज़

x match { 
    case a:Int => 
    val b = 1 
    val c = b +3 
    println("hello!") 
    c 
    case _ => 5 
} 

कुछ के साथ एक ही बहुत लंबे कार्यों उस रूप का एक अंतर्निहित पैरामीटर का उपयोग:

a.map { implicit x => { 
    // many, many complex lines of code 
}} 

मैं:

a.map { implicit x => 
    // many, many complex lines of code 
} 

के विपरीत मैंने बहुत सारे दस्तावेज/एफएक्यू को देखा है कि कोड की कई पंक्तियों को हमेशा घुंघराले ब्रेसिज़ से घिरा होना चाहिए, लेकिन इन अपवादों के लिए स्पष्टीकरण नहीं मिला। मुझे समझना अच्छा लगेगा या एक अच्छी अंतर्ज्ञान है ताकि मुझे जादू की तरह महसूस न हो।

+0

क्या आप उस दस्तावेज़ पर इंगित करना चाहते हैं जिसका आप संदर्भ दे रहे हैं? – aij

+1

फ़ंक्शन अक्षरों के लिए उत्तर: http://stackoverflow.com/a/13873899/1296806 –

उत्तर

2

एक केस स्टेटमेंट में, शरीर, जबकि यह ब्लॉक की तरह दिखता है, वास्तव में arg => expr के रूप में, एक फ़ंक्शन शाब्दिक का अभिव्यक्ति हिस्सा है। चूंकि मामले के बयान मामले ब्लॉक के समापन घुमाव के किसी अन्य मामले के वक्तव्य द्वारा समाप्त किए जाते हैं, इसलिए फ़ंक्शन शाब्दिक सीमाओं को निश्चित रूप से परिभाषित किया जाता है और अभिव्यक्ति को अपने स्वयं के ब्लॉक डिलीमीटर की आवश्यकता नहीं होती है

संबंधित मुद्दे