En primer lugar, vamos a limpiar su código un poco:
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 ??
}
Así que usted está diciendo que si Scala r
es 1, a continuación, volver 1, y si r == c
, de vuelta 1. Eso está bien. Pero si desea que el método devuelva un Int, debe devolver uno en cada caso. Entonces Scala se queja porque no sabe qué Int devolver cuando r
no es 1 ni c
.
La solución es agregar una cláusula else
que devuelve alguna otra Int.
Como una nota adicional, que puede y debe dejar de lado la palabra clave return
aquí, dejando Scala implícitamente sabe que el resultado de la expresión if-else, como la última expresión en el cuerpo de la función, debe ser devuelto:
def isLast(c: Int, r: Int):Int = {
if(r == 1)
1
else if (r == c)
1
else
0 // or some other Int
}
Como nota final, si tiene una función cuyo nombre comienza por is
, probablemente debería devolver un valor booleano. En otras palabras, si la entrada es la última, entonces devuelve verdadero, de lo contrario es falso.
Este es un buen lugar para comenzar Scala. http://twitter.github.com/scala_school/ –