2009-12-16 12 views
5

मुझे यकीन है कि इस सवाल का जवाब बहुत सरल है, लेकिन मैं इस में फंस:varargs पहेली?

Welcome to Scala version 2.7.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_14). 
Type in expressions to have them evaluated. 
Type :help for more information. 

scala> def f(x:Int*)=0 
f: (Int*)Int 

scala> val xs:Seq[Int]=1::2::3::4::Nil 
xs: Seq[Int] = List(1, 2, 3, 4) 

scala> f (xs) 
<console>:7: error: type mismatch; 
found : Seq[Int] 
required: Int 
     f (xs) 
     ^

मैं एक 'इंट *' का निर्माण कैसे?

उत्तर

10

तर्क सूची में एक दृश्य अनपैक करने के लिए _*

scala> f(xs: _*) 
res1: Int = 0 
+0

हाँ का उपयोग करें! यह काम करता है! ... इस तरह के "मजबूर" की तरह थोड़ा लगता है, हालांकि – GClaramunt

+2

ठीक है, यह प्रकार को मजबूर कर रहा है। सही प्रकार एक तर्क सूची है, एक तर्क नहीं जो एक सूची है। वैसे, यह किसी भी प्रकार के अनुक्रम के साथ-साथ किसी भी प्रकार के अनुक्रम में परिवर्तित किया जा सकता है, ताकि आप सीधे 'सूची' पारित कर सकें। इसके अलावा, यह सममित है। आप 'एक्सएस मैच {केस सूची (वाईएस @ _ *) => ...} 'कर सकते हैं। –

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