Ответ 1
Во-первых, немного очистите свой код:
def isLast(c: Int, r: Int):Int = {
if(r == 1)
return 1
else if (r == c)
return 1
// but what about when r is neither 1 nor c ??
}
Итак, вы говорите scala, что если r
равно 1, верните 1, а если r == c
, верните 1. Это хорошо. Но если вы хотите, чтобы метод возвращал Int, он должен возвращать один в каждом случае. Поэтому scala жалуется, потому что не знает, какой Int вернется, когда r
не является ни 1, ни c
.
Исправление состоит в том, чтобы добавить предложение else
, чем возвращает некоторый другой Int.
В качестве дополнительной заметки вы можете и должны оставить здесь ключевое слово return
, позволяя scala неявно знать, что результат выражения if-else, как последнее выражение в теле функции, должен быть возвращен:
def isLast(c: Int, r: Int):Int = {
if(r == 1)
1
else if (r == c)
1
else
0 // or some other Int
}
В качестве окончательной заметки, если у вас есть функция, чье имя начинается с is
, то она должна, вероятно, возвращать логическое значение. Другими словами, если последний является последним, верните true, иначе false.