Scala 方法调用中括号的规则是什么?

2023-11-24

toList 不是一个将某些内容转换为 List 的方法吗?

如果是的话为什么我不能使用括号呢?我一定在这里遗漏了一些更基本的东西。

这是示例:

val l = Array(1,2,3).toList // works fine

val l = Array(1,2,3).toList() // gives the error below

方法 apply 的参数不足:特征中的 (n: Int)Int 线性序列优化。未指定值参数 n。


如果一个方法被定义为

def toList = { /* something */ }

那么它必须被称为

object.toList

没有额外的括号。我们说这个方法有零参数列表.

我们还可以定义一个参数列表,但不向其中添加任何内容:

def toList() = { /* something */ }

现在,我们可以调用其中任何一个

object.toList()
object.toList

因为 Scala 允许在方法调用时省略括号的捷径。

就 JVM 而言,第一个定义(“零参数列表”)和第二个定义(“一个空参数列表”)没有区别。但 Scala 仍然保持着自己的特色。这是否是一个好主意还有待商榷,但是当您意识到我们还可以时,动机可能会更清楚

def toList()() = { /* something */ }

这被称为两个空参数列表,然后调用任意一个

object.toList()()
object.toList()
object.toList

现在,如果我们要将其转换为函数,我们将其键入为

() => () => T   /* T is the return value of the something */

而第二个定义是

() => T

这在概念上显然是不同的,即使实际上你以同样的方式使用它(什么都不放进去,迟早会拿出一个T).

Anyway, toList不需要任何参数,Scala 标准是省略括号,除非该方法更改对象本身(而不是仅仅返回某些内容),所以它是def toList之后没有任何括号。因此你只能称其为object.toList.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala 方法调用中括号的规则是什么? 的相关文章

  • Scala:var List 与 val MutableList

    在 Odersky 等人的 Scala 书中 他们说使用列表 我还没有从头到尾读过这本书 但所有的例子似乎都使用了 val List 据我了解 还鼓励人们使用 vals 而不是 vars 但在大多数应用程序中 使用 var List 或 v
  • collect_list() 是否保持行的相对顺序?

    想象一下我有以下 DataFrame df id featureName featureValue id1 a 3 id1 b 4 id2 a 2 id2 c 5 id3 d 9 想象一下我运行 df groupBy id agg coll
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • Scala 除以零会产生不同的结果

    我对 Scala 如何处理除以零感到困惑 这是 REPL 代码片段 scala gt 1 0 java lang ArithmeticException by zero 33 elided scala gt 1 toDouble 0 toD
  • Scala+Slick 3:将一个查询的结果插入到另一张表中

    这个问题是关于 slick 3 0 或 3 1 的 我对此很灵活 我有一个中间查询 我用它来处理map for等等以获得我想要的结果 最后我有一个 val foo DBIOAction Seq MySchema Bar NoStream E
  • 通过spark-shell以静默模式执行scala脚本

    需要通过spark shell以静默模式执行scala脚本 当我使用时spark shell i file scala 执行后 我进入scala交互模式 我不想进入那里 我尝试执行spark shell i file scala 但我不知道
  • Spark SQL中如何按列降序排序?

    I tried df orderBy col1 show 10 但它是按升序排列的 df sort col1 show 10 也按升序排序 我查看了 stackoverflow 发现的答案都已过时或称为 RDD https stackove
  • 组合多个任意长度的列表

    我正在寻找一种通过以下方式加入多个列表的方法 ListA a b c ListB 1 2 3 4 ListC Resulting List a 1 b 2 c 3 4 换句话说 元素按顺序排列 从第一个列表开始组合到结果列表中 任意数量的输
  • 如何通过 Scala REPL 使用第三方库?

    我已经下载了Algebird我想尝试一些事情Scala 解释器使用这个库 我该如何实现这一目标 当然 您可以使用 scala cp 无论如何并手动管理您的依赖项 但这变得非常乏味 尤其是当您有多个依赖项时 更灵活的方法是使用sbt http
  • Scala Sparkcollect_list() 与 array()

    有什么区别collect list and array 在 Spark 中使用 scala 我看到到处都有使用情况 但我不清楚用例来确定差异 尽管两者array https spark apache org docs latest api
  • 如何在cassandra中保存spark流数据

    构建 sbt以下是build sbt文件中包含的内容 val sparkVersion 1 6 3 scalaVersion 2 10 5 resolvers Spark Packages Repo at https dl bintray
  • 如何在 akka actor 中测试公共方法?

    我有一个 akka 演员 class MyActor extends Actor def recieve def getCount id String Int do a lot of stuff proccess id do more st
  • Spark Streaming 中是否需要检查点

    我注意到 Spark 流示例也有检查点代码 我的问题是检查点有多重要 如果是为了容错 那么在此类流应用程序中发生故障的频率是多少 这一切都取决于您的用例 假设您正在运行一个流作业 它仅从 Kafka 读取数据并计算记录数 如果您的应用程序在
  • Scala 警告、IntelliJ 和编译器标志

    我目前正在试用 IntelliJ Scala 插件 有件事让我有点烦恼 编译时我收到 3 个警告 Warning scala Recompiling 4 files Warning scala Warning scala there wer
  • 在 Spark 中将多行汇总为单行和单列

    我有一个如下的火花 DF 我需要汇总具有与单行相同 ID 的多行 但值应该不同 id values 1 hello 1 hello Sam 1 hello Tom 2 hello 2 hello Tom 预期输出 id values 1 h
  • akka-http:找不到参数解组的隐式值

    我的 Spray json 支持看起来像这样 object MarshallingSupport extends SprayJsonSupport implicit def json4sFormats Formats DefaultForm
  • Scala 中的行聚合

    我正在寻找一种方法在 Scala 的数据框中获取一个新列来计算min max中的值col1 col2 col10对于每一行 我知道我可以使用 UDF 来做到这一点 但也许有一种更简单的方法 Thanks Porting 这个Python答案
  • scala.math.BigDecimal :1.2 和 1.20 相等

    将 Double 或 String 转换为 scala math BigDecimal 时如何保持精度和尾随零 用例 在 JSON 消息中 属性的类型为 String 值为 1 20 但是在 Scala 中读取这个属性并将其转换为 BigD
  • Scalaz 拆箱标记类型不会自动拆箱

    Reading http eed3si9n com learning scalaz Tagged type html http eed3si9n com learning scalaz Tagged type html并尝试示例代码 imp
  • Scala 匿名函数中的 return 语句

    为什么显式 return 语句 使用return关键字 在匿名函数中从封闭的命名函数返回 而不仅仅是从匿名函数本身返回 例如 以下程序会导致类型错误 def foo String x Integer gt return x foo 我知道建

随机推荐

  • MVC 中的 P3P 标头信息

    我不确定应该将其放在我的 Asp net MVC 网站中的什么位置 HttpContext Current Response AppendHeader P3P CP IDC DSP COR ADM DEVi TAIi PSA PSD IVA
  • 承诺并订阅

    我有一个 Angular2 ionic2 应用程序 我有一个请求城市的函数 但收到一个错误 指出属性订阅不存在this cityService getAllCities cityPage ts 有一个这样的函数 getCities this
  • Python - PySpark 的 Pickle Spacy

    The Spacy 2 0 文档提到开发人员添加了允许对 Spacy 进行 pickle 的功能 以便它可以由 PySpark 接口的 Spark 集群使用 但是 他们没有给出如何执行此操作的说明 有人可以解释一下我如何pickle Spa
  • TabLayout中的Fragment仅在用户滑动Android时加载

    你好 我正在用 A 制作一个应用程序fragment和几个孩子fragment在里面使用tablayout and viewpager 问题全是我的孩子fragment from Tablayout 始终执行 每当用户单击父级时加载所有代码
  • if-let 还是普通 if 条件更好?

    例如 fn foo gt Option lt gt fn bar gt Option lt gt if let None foo lt here return None 然后我将 if 语句更改为 if None foo 而且它也有效 可以
  • 从 python 脚本启动节点应用程序

    是否可以从树莓派上的Python脚本中启动node js应用程序 在命令行上我运行sudo node myscript js 我可以使用像操作系统这样的库吗 文件的第一行应为 usr bin python 您可以使用以下命令调用命令子流程调
  • H2 SQL语法异常

    我正在尝试导入 H2 的 sql 脚本 该脚本由 spring batch 提供 用于存储作业元数据 当我直接在 H2 控制台中执行此脚本时 没有语法错误 但我在初始化阶段引用了 Hibernate JPA 中要导入的相同脚本 但出现了以下
  • 使用 Docker 和 Docker Compose 时,Cypress 无法验证该服务器是否正在运行

    我目前正在运行三个 docker 容器 用于前端 Web 应用程序的 Docker 容器 在端口 8080 上公开 后端服务器的 Docker 容器 在端口 5000 上公开 我的 MongoDB 数据库的 Docker 容器 所有三个容器
  • 当启用急切执行时,传递给 Optimizer.compute_gradients 的“loss”应该是一个函数

    我是 TensorFlow 的新手 刚刚开始学习和理解它 我正在研究neural style transfer问题 我正在使用张量流version 1 14 我收到错误当启用急切执行时 传递给 Optimizer compute gradi
  • AVMutableCompositionTrack - insertTimeRange - insertEmptyTimeRange 问题

    我有一个奇怪的问题 我想用两个声音文件和静音生成一个新的声音文件 声音1 2秒长 静音 2秒静音 声音2 2秒长 当我尝试下面的代码时 我得到了一个 6 秒长的声音文件 其中包含所有部分 但顺序不同 顺序是 声音1 声音2 静音 我无法将这
  • 动态创建并提交表单

    有办法进去吗jQuery即时创建并提交表单 像下面这样 Content Are
  • 函数局部 typedef 在 C++0x lambda 中是否可见?

    我遇到了一个奇怪的问题 以下简化代码重现了 MSVC 2010 中的问题 template
  • 在 Oracle 中定义局部变量的最简单方法是什么?

    在SQL Server中 我可以像这样定义局部变量 declare id number 1000 select from tbl A where id id select from tbl B where id id 非常方便 我尝试做同样
  • 为什么VPC中的AWS lambda函数有时会超时,有时会正常工作?

    我在 VPC 中有一些 lambda 函数 其中一些需要 Internet 才能工作 所以我添加了一个 NAT 实例 t2 micro 问题是我有一些函数有时可以工作 有时会超时 例如 调用 FB API 的函数 80 的时间工作 20 的
  • 在 Vim 中运行 Python 代码

    我正在使用 Vim 编写 Python 代码 每次我想运行代码时 我都会在 Vim 中输入以下内容 w python 这让人沮丧 所以我一直在寻找一种更快的方法来在 Vim 中运行 Python 代码 也许从终端执行 Python 脚本 我
  • 如何抑制 C# 中的 thread.abort() 错误?

    当我的程序加载时 我在后台线程上显示启动屏幕 一旦加载 我将中止线程 因为它的唯一目的是显示 正在加载 启动画面 我的问题是 当中止线程时 它会抛出ThreadAbortException用户只需单击 继续 即可 我该如何处理这个问题 我试
  • 从文本文件中获取非空白行的总数?

    我在用 File ReadLines file txt Count 查找文件中的总行数 我怎样才能做到这一点 但忽略所有空白行 您可以使用String IsNullOrWhiteSpace方法与Count File ReadLines fi
  • 在控制台中查看 TFS 变更集详细信息

    我正在使用 TFS 并且想要查看包含多个文件中的更改的变更集上的所有更改 在 GUI 中查看此内容效率不高 因为我必须打开每个文件 我想做的是告诉控制台上的 TFS 向我显示对变更集编号 777 中的所有文件的所有更改 是否有命令可以执行此
  • 如何输入最初为 None 但保证获得值的提示变量

    我有一个类变量 如下所示 class MyClass def init self self value MyOtherClass None None self initialize value def initialize value se
  • Scala 方法调用中括号的规则是什么?

    toList 不是一个将某些内容转换为 List 的方法吗 如果是的话为什么我不能使用括号呢 我一定在这里遗漏了一些更基本的东西 这是示例 val l Array 1 2 3 toList works fine val l Array 1