अजगर लोगों के लिए:
स्काला के _*
ऑपरेटर कम या ज्यादा पायथन के *-operator के बराबर है।
उदाहरण
link से स्केला उदाहरण Luigi Plinge द्वारा प्रदान की परिवर्तित:
def echo(args: String*) =
for (arg <- args) println(arg)
val arr = Array("What's", "up", "doc?")
echo(arr: _*)
अजगर को दिखाई देगा:
def echo(*args):
for arg in args:
print "%s" % arg
arr = ["What's", "up", "doc?"]
echo(*arr)
और दोनों followin देना ग्राम उत्पादन:
What's
up
doc?
अंतर: खोल स्थितीय मापदंडों
पायथन के *
-operator भी निश्चित arity कार्यों के लिए स्थितीय मापदंडों/पैरामीटर के खोल के साथ सौदा कर सकते हैं:
def multiply (x, y):
return x * y
operands = (2, 4)
multiply(*operands)
8
डी स्काला के साथ एक ही oing:
def multiply(x:Int, y:Int) = {
x * y;
}
val operands = (2, 4)
multiply (operands : _*)
असफल हो जायेगी:
not enough arguments for method multiply: (x: Int, y: Int)Int.
Unspecified value parameter y.
लेकिन यह स्केला के साथ एक ही प्राप्त करने के लिए संभव है:
def multiply(x:Int, y:Int) = {
x*y;
}
val operands = (2, 4)
multiply _ tupled operands
Lorrin Nelson के अनुसार यह है कि यह कैसे काम करता है:
The first part, f _, is the syntax for a partially applied function in which none of the arguments have been specified. This works as a mechanism to get a hold of the function object. tupled returns a new function which of arity-1 that takes a single arity-n tuple.
बारे में अन्य पठन:
मुझे लिखने के लिए इंगित करने के लिए धन्यवाद! – Chris