6
我目前正在以下Functional Programming In ScalaScala在變量函數中突出顯示星號?
這是List[A]
def apply[A](as: A*): List[A] =
if (as.isEmpty) Nil
else ::(as.head, apply(as.tail: _*))
的僞實施apply
如果我在as.tail: _*
省略: _*
,斯卡拉抱怨的類型不匹配,這是有道理的,因爲as.tail
是Seq[A]
這裏。
但是_*
究竟是做什麼的?
編輯::
這種正確的術語是序列通配符
有趣。所以我正確地認爲'_ *'是一個**特殊結構**,而不是另一個複雜的下劃線規則,我不明白?我還沒有遇到下劃線用於註釋類型的另一個示例(_existential type_除外)。謝謝 –
「序列參數」http://www.scala-lang.org/files/archive/spec/2.11/06-expressions.html#function-applications –
對應於「模式序列」中的「序列通配符」,http: //www.scala-lang.org/files/archive/spec/2.11/08-pattern-matching.html#pattern-sequences –