在 Python 中,我们有星号(或“*”或“解包”)运算符,它允许我们解包列表,以便在传递位置参数时使用。例如:
range(3, 6)
args = [3, 6]
# invokes range(3, 6)
range(*args)
在这个特定的例子中,它并没有节省太多的输入,因为range
只需要两个参数。但是您可以想象,如果 有更多参数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
吗?