为什么在 scala 中创建 List 时需要 Nil ? [复制]

2024-02-10

我在清单上有一个基本问题

当我尝试使用 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(使用前将#替换为@)

为什么在 scala 中创建 List 时需要 Nil ? [复制] 的相关文章

  • 测试 python 列表的所有元素是否为 False

    如何返回False如果所有元素都在列表中False 给定的列表是 data False False False Using any https docs python org 2 library functions html any gt
  • 如何向列表添加值>

    我需要将派生类的元素添加到抽象类的共享指针列表中 我一直在尝试这个 我知道我正在尝试在下面的示例中创建抽象类的实例 但我不知道如何使其工作 简化的类如下所示 using namespace std class Abstract public
  • 在 R 中垂直绘制表 kable::extra 和 kable 的列表?

    我需要绘制表格列表一个在另一个之下 显示垂直 有任何想法吗 问题从这里开始 https stackoverflow com questions 73867229 plot a list of tables in a single table
  • 新式(“内联”)宏需要 scala.meta

    我刚刚更新到 scala meta 2 0 0 M1 和最新的 scala 2 12 3 现在宏不再编译 我所做的唯一更改是将元版本从 1 8 0 更改为 2 0 0 M1 错误 新式 内联 宏需要 scala meta 有谁知道是否有快速
  • 如何使用流从两个列表或数组乘法中查找元素对

    我有两个数字列表 我想找到所有可能的数字对 例如 给定列表 1 2 3 and 3 4 结果应该是 1 3 1 4 2 3 2 4 3 3 3 4 我知道我可以使用for loop但有没有更简洁的方法来使用Java 8 流 我尝试了以下操作
  • 有没有办法捕获 Spark 中使用通配符读取的多个 parquet 文件的输入文件名?

    我使用 Spark 将多个 parquet 文件读取到单个 RDD 中 并使用标准通配符路径约定 换句话说 我正在做这样的事情 val myRdd spark read parquet s3 my bucket my folder parq
  • Python 中两个列表列表的高效比较

    我是 python 的新手 只是在做项目时学习一些东西 这里我有两个列表列表 我需要比较和分离 A gt B 中找到的差异和 b gt A 中找到的差异 最好的比较方法是什么 A 1L test case 1 1L test case 2
  • 阶乘的 Scala 排列

    我怎样才能找到n Scala 中某些字母的排列 Scala 2 9 RC1 scala gt abc permutations toList res58 List String List abc acb bac bca cab cba
  • 循环列表的值[重复]

    这个问题在这里已经有答案了 我是编码新手 正在尝试编写一个简单的代码 该代码将采用一个列表 例如 1 2 3 并循环元素 n 次 所以如果n 1 我应该得到A 3 1 2 如果n 2 我应该得到A 2 3 1 我写的代码是 n 1 j 0
  • 在 Scala 和 SBT 中调试较长的编译时间

    在我的 Scala SBT 项目中 我有一个文件需要 5 分钟才能编译 所有其他的都可以在几秒钟内编译 这使得开发非常痛苦 我确信我滥用了一些 Scala 构造 但我不知道如何调试它 如何在 Scala 中调试较长的编译时间 我正在使用 S
  • 错误:协变类型 A 出现在逆变位置

    我试图写一个不可变的Matrix A 班级 我希望该类是协变的A但是当我把 在 前面A编译器开始抱怨类中的某些操作 以下是我的相关子集Matrix类 实际类比以下子集大 5 倍左右 class Matrix A private val co
  • Scala 和变量中的模式匹配

    我是 Scala 新手 有点想知道模式匹配是如何工作的 想象一下我有以下内容 case class Cls i Int case b Cls i gt Ok case e Cls gt Ok case f Cls gt Ok case s
  • Scala 模式匹配变量绑定

    为什么提取器返回时不能以 样式绑定变量Option
  • Spark Scala 将列从一个数据帧复制到另一个数据帧

    我有一个原始数据框的修改版本 我在其上进行了聚类 现在我想将预测列恢复为原始 DF 索引没问题 因此匹配 我该怎么做 使用这段代码我得到一个错误 println Predicted dfWithOutput show println Ori
  • 缓存 Slick DBIO 操作

    我正在尝试加快 SELECT FROM WHERE name 的速度Play 中的查询类型 Scala 应用程序 我正在使用 Play 2 4 Scala 2 11 play slick 1 1 1 包 该软件包使用Slick 3 1版本
  • java交叉连接两个列表

    我有一个 ABC 类 其中包含两个整数字段 public class ABC private Integer x private Integer y getters and setters 我有两个列表 xValues 和 yValues
  • 列表 到数据视图

    如何在 Net 中将列表转换为数据视图 我的建议是将列表转换为 DataTable 然后使用表的默认视图来构建 DataView 首先 您必须构建数据表
  • 内置方案以检查列表包含情况

    在Python中 我可以执行 x in list 来查看列表是否包含x 方案中是否有等效的内置功能可以做到这一点 The R5RS http schemers org Documents Standards R5RS HTML r5rs Z
  • 分析 sbt 构建

    我的 sbt 构建需要很长时间 它又大又复杂 很难知道从哪里开始清理 看起来 sbt 保留了很多关于构建结构的元数据 包括相互依赖关系 命名任务 范围界定等 有了所有这些元数据 似乎很容易跳入并测量每个不同任务 及其范围 花费的时间 在代码
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表

随机推荐