Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 为什么我们需要在列表的末尾加上“;“无”;_Scala - Fatal编程技术网

Scala 为什么我们需要在列表的末尾加上“;“无”;

Scala 为什么我们需要在列表的末尾加上“;“无”;,scala,Scala,以下是在scala中定义列表的方法之一。为什么我们要以零结束呢 val oneTwoThree = 1 :: 2 :: 3 :: Nil :是列表前置运算符。要使用此运算符构造列表,必须从现有列表开始。空列表称为Nil,它是一个方便的起点。操作符希望左侧有一个元素,右侧有一个列表 3不是一个列表。因此,没有::Nil的1::2::3将是一个类型错误。Nil只是列表的一个对象(单个实例),不包含任何元素(为空)。您所展示的模式是定义列表的多种方法之一。::运算符关联右边,因此它在右边的元素上查找

以下是在scala中定义列表的方法之一。为什么我们要以零结束呢

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 => ...
}