में तर्क के रूप में मल्टीलाइन फ़ंक्शन शाब्दिक मैं हमेशा सोचता हूं कि क्यों कभी-कभी फ़ंक्शन अक्षर के साथ हम कई कथनों के लिए घुंघराले ब्रेस को अनदेखा कर सकते हैं। इसे स्पष्ट करने के लिए, एक मल्टीलाइन फ़ंक्शन शाब्दिक के लिए वाक्यविन्यास घुंघराले ब्रेसिज़ के साथ बयान संलग्न करना है। इसलिए की तरह,स्केल
val fl = (x: Int) => {
println("Add 25 to "+x)
x + 25
}
हालांकि, जब आप इसे एक एकल तर्क समारोह को पारित, तुम समारोह शाब्दिक के लिए आवश्यक घुंघराले ब्रेस अनदेखा कर सकते हैं।
किसी दिए गए समारोह च के लिएतो,
def f(fl: Int => Int) {
println("Result is "+ fl(5))
}
आप, च() इस तरह कॉल कर सकते हैं
f(x=> {
println("Add 25 to "+x)
x + 25
})
-------------------------
Add 25 to 5
Result: 30
या जब आप समारोह कॉल में कोष्ठक के बजाय घुंघराले ब्रेसिज़ उपयोग करते हैं, आप कर सकते हैं समारोह शाब्दिक से आंतरिक घुंघराले ब्रेसिज़ को हटा दें। तो निम्नलिखित कोड भी काम करेगा,
f{ x=>
println("Add 25 to "+x)
x + 25
}
उपर्युक्त कोड अधिक पठनीय है और मुझे पता है कि कई उदाहरण इस वाक्यविन्यास का उपयोग करते हैं। हालांकि, क्या कोई विशेष नियम है जिसे मैं याद कर सकता हूं, यह समझाने के लिए कि यह इरादा क्यों काम कर रहा है?
इस विवरण मैं खोज रहा था है। इसके अलावा, आपके द्वारा हाइलाइट किए गए चश्मे के अनुभागों के अलावा, कोई भी बेहतर समझ के लिए ब्लॉक (6.11) अनुभाग का संदर्भ ले सकता है। – jafaeldon
गीट उत्तर, मैं इसे बेहतर समझा नहीं सकता था। इसे ऊपर उठाया चीयर्स! – wleao