scala是否延迟了定义常量?

时间:2016-02-03 16:58:41

标签: scala

如果Java我可以合法地做到这一点......

int num = 5;
final boolean isPositive;
if(five > 0) {
  isPositive = true;
} else {
  isPositive = false;
}
System.out.println("Is positive: " + isPositive); // Prints "Is positive: true"

我称之为延迟定义常数。

有没有办法在Scala中创建延迟定义常量?

3 个答案:

答案 0 :(得分:6)

在scala中,您无法延迟定义。如果你想做类似的事情,你通常会通过将它分配给if语句的结果来实现这一点。

val isPositive = if(num > 0) true else false

甚至只是

val isPositive = num > 0

答案 1 :(得分:2)

您可以这样做:

val isPositive = num > 0

或(当num难以计算且可能未被调用时 - 那么你可以延迟计算)

lazy val isPositive = num > 0

如果num是一个变量,那么你可以写:

def isPositive = num > 0

在Scala中,将短函数编写为一个衬里是完全可以的。

答案 2 :(得分:1)

我这样做了......

val num = 5
val isPositive: Boolean = {
  if(num > 0) { true }
  else { false }
}
println("Is positive: " + isPositive) // Prints "Is positive: true"