我在清单上有一个基本问题
当我尝试使用 cons 运算符创建列表时,出现以下错误
scala> val someList = 1::2
<console>:10: error: value :: is not a member of Int
val someList = 1::2
^
但如果你看下面,只要我在末尾添加 Nil ,它就可以工作了。
scala> val someList = 1::2::Nil
someList: List[Int] = List(1, 2)
我想知道为什么当我们创建列表时,最后至少需要一次 Nil
Nil 是一种数据类型吗?或者空元素?
正是因为这个原因。
value :: 不是 Int 的成员
在 Scala 中,运算符实际上是对象上的函数。在这种情况下,::
是一个函数Nil
对象,即实际上是一个空列表对象.
scala> Nil
res0: scala.collection.immutable.Nil.type = List()
当你这样做时1::2
,Scala 寻找名为的函数::
on 2
但它没有发现这一点。这就是为什么它会因该错误而失败。
Note:在 Scala 中,如果运算符的最后一个字符不是冒号,则对第一个操作数调用该运算符。例如,1 + 2
基本上是1.+(2)
。但是,如果最后一个字符是冒号,则在右侧操作数上调用运算符。所以在这种情况下,1 :: Nil
实际上是Nil.::(1)
。自从,::
返回另一个列表对象,你可以链接它,就像这样1 :: 2 :: Nil
实际上是,Nil.::(2).::(1)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)