【发布时间】:2020-09-22 04:40:25
【问题描述】:
我认为 Scala 将语句分类为 Unit 类型。但是当我运行以下代码时:
object HelloWorld {
var ball = new Ball
def main(args: Array[String]): Unit = {
println((ball.color = "green").getClass)
}
}
class Ball {
var color: String = "blue"
}
输出是
void
我了解到 void 仅在 Scala 中用于与 Java 兼容。那么为什么这里用void作为这个语句的类型而不是Unit呢?
【问题讨论】:
-
澄清一点:在 Scala 中,
ball.color = "green"是一个表达式。它可以用作语句,但在(ball.color = "green").getClass中不是;只有整个println(...)是这里的声明。如果您尝试使用不能成为表达的语句,例如(var ball = new Ball).getClass(),你会看到你不能在语句上调用方法,而且它们没有类型。 -
@AlexeyRomanov 顺便说一下
{var ball = new Ball}.getClass()将是void。但是{var ball = new Ball}实际上是{var ball = new Ball; ()}。