Scala if else行为

时间:2014-05-12 20:51:33

标签: scala

我正处于scala的早期阶段,我希望以下两位代码的行为相同,但事实并非如此。我的印象是“其他”是可选的。

任何想法为什么?这是一个toString方法(在一个表示有理数的简单类中)

这按预期工作,返回“1”(对于1/1):

if(numer == denom) {
  "1"
} else {
  numer + "/" + denom
}

这不,返回“1/1”:

if(numer == denom) {
  "1"
}

numer + "/" + denom

1 个答案:

答案 0 :(得分:6)

else部分确实是可选的,但方法的返回值是方法中 last 表达式的值。因此,当您不将else部分放在实际的else块中时,您始终会返回该值。作为解决方案,您可以使用if/else表达式,这是首选方式,或者在return语句中使用实际的if语句。

// The return value of the method is the value of the if/else expression.
if (numer == denom) {
  "1"
} else {
  numer + "/" + denom
}

if (numer == denom) {
  return "1"
}

numer + "/" + denom