为什么我们需要以“Nil”结束List

时间:2014-09-14 15:04:35

标签: scala

以下是在scala中定义List的方法之一。为什么我们需要以Nil结束呢?

val oneTwoThree = 1 :: 2 :: 3 :: Nil

4 个答案:

答案 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)