scala - 这个 Scala 语法是什么意思——值定义后跟左大括号和缩进的东西?

标签 scala

我正在尝试破译别人的代码。以下内容出现在 Scala 特征中。这不是它的确切内容,我展平了一些细节以使其更通用(在包含 zipWithIndex 方法的闭花括号之前有一些额外的行,以及一些其他模式匹配的东西。)我主要关心的是我对这个概念不熟悉;一个以左花括号开头的值定义,然后是一堆缩进的内容。

val example: ExampleType = {
    val anOtherExample = "String"
    val yetAnOtherExample = 22
    new ExampleType(anOtherExample, yetAnOtherExample)
}

最佳答案

拥有类似 C 语言和/或 Java 的经验,您可能已经习惯了花括号 {} 表示一段代码 - 即只是一个将调用的指令集。

Scala 在这部分有所不同,因为在 Scala 中几乎所有内容都是表达式,即几乎所有内容都会计算为某个值,因此可以分配给 val、作为参数传递等。

因此,Scala 中的代码块不仅仅是指令序列,而是可以赋值和传递的有效表达式。代码块的计算结果为该 block 中的最后一个表达式,即

val x: Int = {
  doSomething()
  doSomethingElse()
  42
}

在上面的示例中,x 将分配 42 作为其值。

关于scala - 这个 Scala 语法是什么意思——值定义后跟左大括号和缩进的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31892654/

相关文章:

scala - 向 JsValue 添加元素?

scala - Akka AssociationError - LAN 地址与本地主机

regex - 使用 Matcher 提取子字符串 : java. lang.IllegalStateException:未找到匹配项

scala - 理解 Scala 类型系统中的辅助模式

mysql - 使用 Slick/Scala 将日期和时间存储到 MySQL 中

regex - Scala Regex启用多行选项

scala - 通过Spark写入HBase : Task not serializable

java - 在调用函数之前更新按钮点击时的标签

关于 Heroku 问题的 Scala-redis 客户端连接到 RedisCloud

sql - Slick - 参数在查询模板中被忽略