- घुमावदार ब्रैकेट का उपयोग क्यों किया जाता है, नियमित विधि कोष्ठक नहीं?
पैरामीटर एक अज्ञात फ़ंक्शन होने पर कुछ लोग घुंघराले ब्रेसिज़ का उपयोग करना पसंद करते हैं। एक बात के लिए, घुंघराले ब्रेसिज़ पैटर्न मिलान करने वाले अज्ञात कार्यों को सक्षम करते हैं, जबकि कोष्ठक नहीं करते हैं। इस विशेष उदाहरण में, घुंघराले ब्रेसिज़ की कोई आवश्यकता नहीं है।
def dotProd(v1:Row, v2:Row) =
v1.zip(v2).map{ case (a, b) => a * b }.reduceLeft(_ + _)
ध्यान दें कि ऊपर समारोह प्रश्न में से एक है, एक से थोड़ा अलग तरह से के रूप में एक ही बात सिद्ध:
एक उदाहरण है जहाँ घुंघराले ब्रेसिज़ (case
पैटर्न मिलान की वजह से) के लिए आवश्यक हैं है।
नहीं, यह एक पैरामीटर है। v1
और v2
dotProd
के लिए पैरामीटर हैं, t
अज्ञात फ़ंक्शन map
पर पारित होने के लिए पैरामीटर है।
t
पर तरीके। आदि
एक _1
, _2
, _3
,: पैरामीटर t
एक टपल (विशेष रूप से, Tuple2[Double, Double]
, (Double, Double)
के रूप में लिखा जा सकता है) के रूप में परिभाषित किया गया था, और tuples आप ऐसा तरीकों के साथ टपल के प्रत्येक सदस्य को निकालने जाने Tuple2
में केवल _1
और _2
है, ज़ाहिर है। ध्यान दें कि पहला पैरामीटर _1
है, _0
नहीं, अन्य कार्यात्मक भाषाओं के प्रभाव के कारण।
वैसे भी, zip
विधि एक List[(Double, Double)]
में (List[Double]
) में परिवर्तित कर देंगे। विधि map
एक ऐसा फ़ंक्शन लेता है जो सूची के तत्वों को परिवर्तित करता है (जो (Double, Double)
टुपल्स हैं) कुछ और में।
स्रोत
2012-05-03 17:42:28
'._1' और' ._2' वास्तव में 'Tuple2' के तरीके हैं? मैं उन्हें फ़ील्ड होने के बारे में जानता था (जैसा कि 'टुप्लेएन' में '_1' से' _N' तक 'एन' फ़ील्ड होंगे, प्रत्येक प्रकार के 'टीआई'' –
@ टोगोग्ना चौधरी निश्चित रूप से, वे विधियां हैं। स्केल का उपयोग बहुत अधिक है विधियों के माध्यम से खेतों, जब तक उन्हें 'निजी [यह] ' –
ओप्स के रूप में घोषित नहीं किया जाता है। आप बिल्कुल सही हैं। पारदर्शी गुण जावा में स्पष्ट एक्सेसर्स/म्यूटेटर के लिए उपयोग किए जाने वाले लोगों को भ्रमित करते हैं, जैसे: पी। मुझे फिर से याद दिलाने के लिए धन्यवाद , हालांकि... –