Scala if-else行为
我在scala的早期阶段,我希望下面两位代码的行为是相同的,但事实并非如此。我的印象是“else”是可选的 你知道为什么吗?这是一个toString方法(在一个表示有理数的简单类中) 这将按预期工作,返回“1”(对于1/1): 不需要,返回“1/1”:Scala if-else行为,scala,Scala,我在scala的早期阶段,我希望下面两位代码的行为是相同的,但事实并非如此。我的印象是“else”是可选的 你知道为什么吗?这是一个toString方法(在一个表示有理数的简单类中) 这将按预期工作,返回“1”(对于1/1): 不需要,返回“1/1”: else部分确实是可选的,但方法的返回值是方法中最后一个表达式的值。因此,如果不将else部分放入实际的else块中,则始终返回该值。作为解决方案,您可以使用首选的if/else表达式,或者在if语句中使用实际的return语句 // The r
else
部分确实是可选的,但方法的返回值是方法中最后一个表达式的值。因此,如果不将else部分放入实际的else
块中,则始终返回该值。作为解决方案,您可以使用首选的if/else
表达式,或者在if
语句中使用实际的return
语句
// The return value of the method is the value of the if/else expression.
if (numer == denom) {
"1"
} else {
numer + "/" + denom
}
或
else
部分确实是可选的,但方法的返回值是方法中最后一个表达式的值。因此,如果不将else部分放入实际的else
块中,则始终返回该值。作为解决方案,您可以使用首选的if/else
表达式,或者在if
语句中使用实际的return
语句
// The return value of the method is the value of the if/else expression.
if (numer == denom) {
"1"
} else {
numer + "/" + denom
}
或
是的,我错误地认为
“1”
将是执行的最后一条语句,因为它将立即返回,而最后一条语句numer+“/”+denom
甚至不会被计算。@Kaveh-您可以使用return
语句强制执行该行为,但这不是Scala惯用的方法。是的,我错误地认为“1”
将是执行的最后一条语句,因为它将立即返回,而最后一条语句numer+“/”+denom
甚至不会被计算。@Kaveh-您可以使用return
语句强制执行该行为,但这不是Scala惯用的方法。
// 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