Scala 为什么我们需要在列表的末尾加上“;“无”;
以下是在scala中定义列表的方法之一。为什么我们要以零结束呢Scala 为什么我们需要在列表的末尾加上“;“无”;,scala,Scala,以下是在scala中定义列表的方法之一。为什么我们要以零结束呢 val oneTwoThree = 1 :: 2 :: 3 :: Nil :是列表前置运算符。要使用此运算符构造列表,必须从现有列表开始。空列表称为Nil,它是一个方便的起点。操作符希望左侧有一个元素,右侧有一个列表 3不是一个列表。因此,没有::Nil的1::2::3将是一个类型错误。Nil只是列表的一个对象(单个实例),不包含任何元素(为空)。您所展示的模式是定义列表的多种方法之一。::运算符关联右边,因此它在右边的元素上查找
val oneTwoThree = 1 :: 2 :: 3 :: Nil
:
是列表前置运算符。要使用此运算符构造列表,必须从现有列表开始。空列表称为Nil
,它是一个方便的起点。操作符希望左侧有一个元素,右侧有一个列表
3
不是一个列表。因此,没有::Nil
的1::2::3
将是一个类型错误。Nil只是列表的一个对象(单个实例),不包含任何元素(为空)。您所展示的模式是定义列表的多种方法之一。::
运算符关联右边,因此它在右边的元素上查找一个方法,即:
,并使用左边的操作数作为方法参数
定义列表的一种更简单、更清晰的方法是:
val onetwother=列表(1,2,3)
或者如果您更喜欢典型的构造函数语法
val onetwother=新列表(1,2,3)
Nil
是告诉我们列表是空的更优雅的方式,这是针对列表的模式匹配的基础。说这样一种方式很优雅,就是Nil
使List
在某种程度上,它可以被视为C字符串中用来表示字符串结尾的“\0”字符。好吧,你可以从任何列表开始。没错,我已经更改了措辞,以便更清楚地表明你可以使用任何列表。你的意思是,非常愚蠢?@Puppy,绝对不适合我!我只是建议有必要使用Nil
。从C的角度来看,我也不认为“\0”的想法是愚蠢的。
xs match {
case Nil => ...
case head :: tail => ...
}