यदि आपको बड़ी संख्या में स्थिरांक प्रारंभ करने की आवश्यकता है और प्रत्येक के लिए val =
लिखने से बचाना चाहते हैं या आप ट्यूपल आकार सीमा (22) को मार रहे हैं तो एक वर्कअराउंड मौजूद है।
अनुभाग The Scala Language Specification के 4.1 से:
एक मूल्य डी फाई nition वैल एक्स: टी = ई डी फाई एनईएस मूल्य का एक नाम के रूप में एक्स कि परिणाम ई के मूल्यांकन से। एक वैल्यू डेफिशन वैल पी 1, ..., पीएन = ई वैल्यू डेफिशन वैल्यू पी 1 = ई के अनुक्रम के लिए एक शॉर्टेंड है; ...; वैल पीएन = ई।
विनिर्देश के अनुसार, एक सब जो क्रम में प्रत्येक मान देता दाएँ हाथ पर एक अभिव्यक्ति निर्दिष्ट द्वारा बड़े अक्षरों से शुरू होने वाले नाम के साथ मूल्यों का एक अनुक्रम को प्रारंभ कर सकते हैं।
val iter = Iterator(1, 2, 3)
val A, B, C = iter.next()
एक और उदाहरण:
val next = { var n = 0;() => { n = n + 1; n } }
val A, B, C, D, E, F, G, H = next()
इस दृष्टिकोण से ऊपर इन तुच्छ मामलों में बहुत उपयोगी नहीं है। नीचे एक और अधिक उपयोगी उदाहरण है कि बिसात के 64 वर्गों में से प्रत्येक के लिए एक निरंतर initializes (स्रोत के लिए Square.scala#L31 देखें):
val squareIter = squares.iterator
val A1, A2, A3, A4, A5, A6, A7, A8,
B1, B2, B3, B4, B5, B6, B7, B8,
C1, C2, C3, C4, C5, C6, C7, C8,
D1, D2, D3, D4, D5, D6, D7, D8,
E1, E2, E3, E4, E5, E6, E7, E8,
F1, F2, F3, F4, F5, F6, F7, F8,
G1, G2, G3, G4, G5, G6, G7, G8,
H1, H2, H3, H4, H5, H6, H7, H8 = squareIter.next()
यह interessting है। लेकिन मुझे यहां पैटर्न द्वारा आपका मतलब क्या नहीं मिलता है। क्या आप थोड़ा और समझा सकते हैं? – ziggystar
मैंने अपना उत्तर –
संशोधित कर दिया है दिलचस्प त्रुटि ... शायद आपको यह इंगित करना चाहिए कि यह विफल रहता है क्योंकि यह 'Tuple2 [Int, Int] 'के समतुल्य है, जो' Tuple2 [Any, Any] 'टाइप किया गया है? –