2012-02-28 8 views
6

मैं :_* का उपयोग Seq[String] से String* में परिवर्तित करने के लिए कर रहा हूं और मुझे एहसास हुआ कि मुझे समझ में नहीं आता कि यह हुड के नीचे कैसे काम करता है।कैसे करता है: _ * आदेशित संग्रहों को परिवर्तनीय तर्क सूचियों में परिवर्तित करें?

क्या इस बारे में सोचने का कोई आसान तरीका है?

उत्तर

7

हुड के तहत, String*Seq[String] के रूप में पारित किया गया है। यह सब सिर्फ वाक्यात्मक चीनी है: बस का अर्थ है

def blah(ss: String*) = {...} 
blah("Hi","there") 

def blah(ss: Seq[String]) = {...} 
blah(Seq("Hi", "there")) 

और :_* में बदल गया है "चीनी पकड़, मैं पहले से ही है कि तुम क्या जरूरत मिल गया है - एक Seq!"

+0

यानी यह सीक की एक विधि नहीं है, सिर्फ एक और चीनी - किसी प्रकार का विशेष ऑपरेटर? :) – tuxSlayer

+1

@tuxSlayer - यह सही है। ':' का मतलब है "प्रकार का है", जैसा कि 'वैल एक्स: इंट' ('x' प्रकार 'Int' है)। तो '_ *' किसी प्रकार का प्रकार होना चाहिए ("मुझे पता है कि आप varargs चाहते हैं, लेकिन देखो, मुझे पहले से ही एक Seq मिल गया है!" प्रकार)। ठीक है, यह वास्तविक प्रकार नहीं है, लेकिन कम से कम चीनी सिंथैक्टिक रूप से सुसंगत है। –

+0

ठीक है, धन्यवाद। बस आज मैंने पुस्तकालय में इस विधि की तलाश में कुछ समय बिताया :) अब इसकी स्पष्ट :) – tuxSlayer

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

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