【发布时间】:2018-04-07 23:08:06
【问题描述】:
通常,在 Scala 中,返回值时不需要 return 关键字,最后一个值始终是返回值。
例如:
def sum(a: Int, b: Int): Int = {
a + b
}
将返回和Int 的a+b。
但是,为什么将总和分配给另一个 val 时,它不会被视为返回值?
例如:
def sum(a: Int, b: Int): Int = {
val sum = a + b
}
将显示类型不匹配错误(预期为Int,得到Unit)。这种行为背后的原因/逻辑是什么?
编辑:正如我从 cmets 和答案中了解到的,不是 Scala last val 不是返回值,而是返回值。但是,val 赋值返回 Unit 而不是分配的类型。原因是:What is the motivation for Scala assignment evaluating to Unit rather than the value assigned?
【问题讨论】:
-
您能解决您遇到的错误吗??
-
感谢您的评论。这是类型不匹配的已知错误/行为。最后一个 val 不被视为返回值。我很好奇这种行为的原因。
-
打字机推理错误??编译器如何将 Unit 转换为 Int?
-
最后一个表达式是返回值,但是
val sum = a + b的类型是Unit,而你声称返回类型是Int。 -
但是
sum是Int。为什么它不会用作返回值?这是最后一个...
标签: scala