什么是:_ *以及它如何在Scala中实现?

时间:2012-06-06 04:32:23

标签: scala symbols

我所知道的:

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. 有没有其他方法可以取代它?
  4.   
  5. 如何:_ *在Scala中定义?
  6.   

谢谢

2 个答案:

答案 0 :(得分:8)

向编译器指示你已经提供了一系列元素只是一个语法糖,没有其它的“实现”。有关更多信息,请参阅Scala Language Specification(§6.6,第78页)

答案 1 :(得分:1)

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

以上相应的varargs示例:

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

您无法实施 - 这是一种语言功能。它并不意味着在调用varargs方法之外的任何事情。