Pythonには、スター(または「*」または「アンパック」)演算子があります。これにより、位置引数を渡す際に便利なリストをアンパックできます。例えば:
range(3, 6)
args = [3, 6]
# invokes range(3, 6)
range(*args)
この特定の例では、range
引数が2つしかないため、入力の手間が省けます。しかし、への引数がもっとある場合range
、またはargs
入力ソースから読み取られた場合、別の関数から返された場合など、これが役立つ場合があることを想像できます。
Scalaでは、同等のものを見つけることができませんでした。Scalaインタラクティブセッションで実行される次のコマンドについて考えてみます。
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)
で使用されている方法以外に、これを行うためのより簡潔な方法はありval y
ますか?