以下是在scala中定义List的方法之一。为什么我们需要以Nil结束呢?
val oneTwoThree = 1 :: 2 :: 3 :: Nil
答案 0 :(得分:5)
::
是列表前置运算符。要使用此运算符构造列表,必须从现有列表开始。名为Nil
的空列表是一个方便的起点。
答案 1 :(得分:4)
::
运算符需要左侧的元素和右侧的列表。
3
不是列表。因此,只有1 :: 2 :: 3
:: Nil
才会出现类型错误。
答案 2 :(得分:1)
Nil
只是告诉我们列表为空的优雅方式,这是与List
进行模式匹配的基础。说这种方式很优雅,Nil
使List
成为algebraic data type。
xs match {
case Nil => ...
case head :: tail => ...
}
它可以被视为' \ 0' C字符串中用于表示字符串结尾的字符。
答案 3 :(得分:0)
Nil只是List的一个对象(单个实例),它不包含任何元素(为空)。您显示的模式是定义List的众多方法之一。 " ::"运算符关联权限,因此它在右边的元素上查找一个方法,即" ::"并使用左操作数作为方法参数。
定义List的更简单,更清晰的方法是:
val oneTwoThree = List(1,2,3)
或者您更喜欢典型的构造函数语法
val oneTwoThree = new List(1,2,3)