我正在学习Scala(Programming Scala,第2版,Odersky).
使用cons运算符构建列表时,我们必须编写:
val l = 1 :: 2 :: 3 :: 4 :: Nil
Run Code Online (Sandbox Code Playgroud)
为什么我们最后需要Nil?为什么编译器不能理解4是最后一个元素,所以只需编写它:
val l = 1 :: 2 :: 3 :: 4
Run Code Online (Sandbox Code Playgroud)
签名::大致是:
case class ::[E](hd: E, tl: List[E]) extends List[E]
// which generates this automatically:
object :: {
def apply[E](hd: E, tl: List[E]): ::[E]
}
Run Code Online (Sandbox Code Playgroud)
签名Nil大致是:
object Nil extends List[Nothing]
Run Code Online (Sandbox Code Playgroud)
如您所见,::获取元素和列表.4不是列表,Nil而是.
| 归档时间: |
|
| 查看次数: |
388 次 |
| 最近记录: |