我正处于scala的早期阶段,我希望以下两位代码的行为相同,但事实并非如此。我的印象是“其他”是可选的。
任何想法为什么?这是一个toString方法(在一个表示有理数的简单类中)
这按预期工作,返回“1”(对于1/1):
if(numer == denom) {
"1"
} else {
numer + "/" + denom
}
这不,返回“1/1”:
if(numer == denom) {
"1"
}
numer + "/" + denom
答案 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