给定一个函数,它接受可变数目的参数,例如Scala:将Seq传递给var-args函数
def foo(os: String*) =
println(os.toList)
如何将一系列参数传递给函数?我想写:
val args = Seq("hi", "there")
foo(args)
很明显,这是行不通的。
给定一个函数,它接受可变数目的参数,例如Scala:将Seq传递给var-args函数
def foo(os: String*) =
println(os.toList)
如何将一系列参数传递给函数?我想写:
val args = Seq("hi", "there")
foo(args)
很明显,这是行不通的。
foo(args:_*)
有窍门。而不是将序列作为单个参数应用,序列中的每个元素都将用作参数。
是否有代码审查友好,较少出现头痛的名称上述函数'''args:_ *' ' – Richeek 2015-06-16 21:31:36
提供一个使之透明的api的一种方法是编写一个名为'foo'的代理函数,它可以进行转换。这样,你原来的'foo'调用可以在你的用户代码不用担心这个问题的情况下工作。话虽如此,如果'foo'需要像Seq'这样的集合而不是像'String'这样的基本类型,那么scala集合的不变性会妨碍你的api的任何理智用法。就好像可变参数列表和标准库集合并非针对除了vanilla之外的相互用例而设计的一样。 – matanster 2015-11-27 08:17:34
@Richeek不幸的是,没有。 – Malcolm 2016-07-23 03:25:03
另请参阅:http://stackoverflow.com/questions/1008783/using-varargs-from-scala – 2009-12-02 13:39:56