2011-12-20 12 views

उत्तर

31

आप एक टपल लौट सकते हैं यह किसी भी पैटर्न के लिए काम करता है, न कि केवल tuples के लिए। तो उदाहरण के लिए:

val list = 1 :: 2 :: 3 :: Nil 

val x :: y = list // x = 1 and y = 2 :: 3 :: Nil 
+0

बहुत बढ़िया है, धन्यवाद (स्केला 2.11 पर परीक्षण)! – dave

+3

यह वास्तव में वास्तव में वही तरीका है जो यह पायथन में काम करता है। –

+1

@ karlKnechtel, केवल तभी जब तत्वों की संख्या लौटाई गई चर की संख्या से मेल खाती है। अन्यथा आपको "अनपैक करने के लिए बहुत अधिक मूल्य" त्रुटि मिलती है, जो कि आपको दूसरे उदाहरण पर पायथन में मिलता है। – dave

6

मुझे एहसास है कि यह एक पुराना सवाल है, लेकिन इसे प्राप्त करने का एक और तरीका है। मुझे नहीं पता कि इसमें कोई नकारात्मकता है या नहीं, लेकिन इसका फायदा यह है कि लौटाए गए मान "नामित" हैं, जिससे कोड थोड़ा अधिक आत्म-स्पष्टीकरणपूर्ण हो जाता है।

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 
     } 
    } 
} 
+1

या केस क्लास का उपयोग करें ताकि पैटर्न मिलान कार्य –

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