我知道的:
scala> def fx(s: String *) = s.foreach(println)
fx: (s: String*)Unit
scala> val lst = List("1","2","3")
lst: List[java.lang.String] = List(1, 2, 3)
scala> fx(lst:_*)
1
2
3
我想知道的:
- 我该如何实施
:_*?通过地图?- 有没有其他方法可以替代它?
- :_* 如何在 Scala 中定义?
谢谢
它只是向编译器指示您已经提供了一系列元素的语法糖,没有其他“实现”。有关更多信息,您可以参考Scala 语言规范(第 6.6 节,第 78 页)
对于采用可变参数的方法,:_*意味着您希望将集合的成员作为可变参数传递。
上面与您对应的可变参数示例:
scala> fx("a", "b", "c")
a
b
c
你无法实现——它是一种语言特性。这并不意味着调用可变参数方法的上下文之外的任何内容。