2008-11-18 8 views
6
इसके बजाय लेखन

क्या स्कैला में किसी अज्ञात फ़ंक्शन के अंदर मूल्य को बाध्य करने के लिए सिंटेक्टिक चीनी है?

((x: Double) => (((y: Double) => y*y))(x+x))(3) 

की

मैं लिखने के लिए

((x: Double) => let y=x+x in y*y)(3) 

की तरह कुछ वहाँ स्काला में वाक्यात्मक चीनी की इस तरह की तरह कुछ है चाहते हैं?

उत्तर

14

वास्तव में यह है: इसे "val" कहा जाता है। :-)

({ x: Double => 
    val y = x + x 
    y * y 
})(3) 

ब्रेसिज़ यहाँ मैं सिर्फ उन्हें जब कार्यों को परिभाषित करने कोष्ठकों करना पसंद करते हैं के पाठ्यक्रम वैकल्पिक हैं, (सभी के बाद, यह नहीं लिस्प है)। val कीवर्ड वर्तमान शब्दावली के दायरे में एक नया बाध्यकारी परिभाषित करता है। स्काला स्थानीय लोगों को लिस्प और एमएल जैसी भाषाओं के विपरीत, अपने दायरे को परिभाषित करने के लिए मजबूर नहीं करता है।

असल में, var किसी भी दायरे में भी काम करता है, लेकिन इसे उपयोग करने के लिए इसे खराब शैली माना जाता है।

+0

धन्यवाद :) मैंने सोचा था कि मुझे लगता है कि कोशिश की थी, लेकिन मैं वाक्य रचना गलत मिल गया है चाहिए। क्या यह सब एक पंक्ति में रखने का कोई तरीका है? – namin

+0

@ जर्मन का एक-लाइन संस्करण है। –

6

ठीक है, यहाँ बंधन के साथ एक लाइनर है:

({ x:Double => val y = x + x; y * y })(3) 

चीयर्स

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