2015-10-02 48 views

回答

7

: _*符號只是告訴Scala編譯器來治療,你傳入方法(其中進行了集合的集合中的元素: _*在參數中),就好像它們已被逐個傳遞給可變參數方法。舉例來說,如果你有

def foo(x: Int*) = x.sum 
val xs = Seq(1, 2, 3, 4) 

然後

foo(xs: _*) 

作品,如果你輸入

foo(1, 2, 3, 4) 
+0

有趣。所以我正確地認爲'_ *'是一個**特殊結構**,而不是另一個複雜的下劃線規則,我不明白?我還沒有遇到下劃線用於註釋類型的另一個示例(_existential type_除外)。謝謝 –

+0

「序列參數」http://www.scala-lang.org/files/archive/spec/2.11/06-expressions.html#function-applications –

+0

對應於「模式序列」中的「序列通配符」,http: //www.scala-lang.org/files/archive/spec/2.11/08-pattern-matching.html#pattern-sequences –

相關問題