3

我知道的:

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

我想知道的:

  1. 我该如何实施:_*?通过地图?
  2. 有没有其他方法可以替代它?
  3. :_* 如何在 Scala 中定义?

谢谢

4

2 回答 2

8

它只是向编译器指示您已经提供了一系列元素的语法糖,没有其他“实现”。有关更多信息,您可以参考Scala 语言规范(第 6.6 节,第 78 页)

于 2012-06-06T06:15:39.977 回答
1

对于采用可变参数的方法,:_*意味着您希望将集合的成员作为可变参数传递。

上面与您对应的可变参数示例:

scala> fx("a", "b", "c")
a
b
c

你无法实现——它是一种语言特性。这并不意味着调用可变参数方法的上下文之外的任何内容。

于 2012-06-06T18:15:42.103 回答