In Python, we have the star (or "*" or "unpack") operator, that allows us to unpack a list for convenient use in passing positional arguments. For example:
range(3, 6) args = [3, 6] # invokes range(3, 6) range(*args)
In this particular example, it doesn't save much typing, since
range only takes two arguments. But you can imagine that if there were more arguments to
range, or if
args was read from an input source, returned from another function, etc. then this could come in handy.
In Scala, I haven't been able to find an equivalent. Consider the following commands run in a Scala interactive session:
case class ThreeValues(one: String, two: String, three: String) //works fine val x = ThreeValues("1","2","3") val argList = List("one","two","three") //also works val y = ThreeValues(argList(0), argList(1), argList(2)) //doesn't work, obviously val z = ThreeValues(*argList)
Is there a more concise way to do this besides the method used in
There is something similar for functiones:
tupled It converts a function that takes n parameters into a function that takes one argument of type n-tuple.
See this question for more information: scala tuple unpacking
Such a method for arrays wouldn't make much sense, because it would only work with functions with multiple arguments of same type.