अजगर में यह कुछ इस तरह करना संभव नहीं है आइटम लौटने?स्काला बराबर अजगर करने के लिए कई
def blarg = ("blargidy", "blarg")
val (i, j) = blarg
नोट समानांतर चर कार्य के लिए पैटर्न मिलान वाक्य रचना:
अजगर में यह कुछ इस तरह करना संभव नहीं है आइटम लौटने?स्काला बराबर अजगर करने के लिए कई
def blarg = ("blargidy", "blarg")
val (i, j) = blarg
नोट समानांतर चर कार्य के लिए पैटर्न मिलान वाक्य रचना:
आप एक टपल लौट सकते हैं यह किसी भी पैटर्न के लिए काम करता है, न कि केवल tuples के लिए। तो उदाहरण के लिए:
val list = 1 :: 2 :: 3 :: Nil
val x :: y = list // x = 1 and y = 2 :: 3 :: Nil
मुझे एहसास है कि यह एक पुराना सवाल है, लेकिन इसे प्राप्त करने का एक और तरीका है। मुझे नहीं पता कि इसमें कोई नकारात्मकता है या नहीं, लेकिन इसका फायदा यह है कि लौटाए गए मान "नामित" हैं, जिससे कोड थोड़ा अधिक आत्म-स्पष्टीकरणपूर्ण हो जाता है।
package test.scala.misc
object TestReturnMultipleNamedValues extends App {
val s = getMultipleNamedValues
println(s"changed=${s.dsChanged} level=${s.dsLevel}")
/** Returns an anonymous structure with named members.
* */
def getMultipleNamedValues() : {val dsChanged : Boolean;val dsLevel : Int} = {
new {
val dsChanged = true
val dsLevel = 1
}
}
}
या केस क्लास का उपयोग करें ताकि पैटर्न मिलान कार्य –
बहुत बढ़िया है, धन्यवाद (स्केला 2.11 पर परीक्षण)! – dave
यह वास्तव में वास्तव में वही तरीका है जो यह पायथन में काम करता है। –
@ karlKnechtel, केवल तभी जब तत्वों की संख्या लौटाई गई चर की संख्या से मेल खाती है। अन्यथा आपको "अनपैक करने के लिए बहुत अधिक मूल्य" त्रुटि मिलती है, जो कि आपको दूसरे उदाहरण पर पायथन में मिलता है। – dave