Zuerst lassen Sie uns Ihren Code ein wenig aufzuräumen:
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 ??
}
So scala Sie sagen, dass, wenn r
1, dann 1 zurückzukehren, und wenn r == c
, zurückkehren 1. ist das in Ordnung. Wenn Sie möchten, dass die Methode einen Int zurückgibt, muss sie einen in jeden Fall zurückgeben. Also beschwert sich Scala, weil es nicht weiß, was Int zurückgeben soll, wenn r
weder 1 noch c
ist.
Die Lösung besteht darin, eine else
Klausel hinzuzufügen, als einige andere Int.
Als zusätzliche Anmerkung, können Sie und hier das return
Stichwort auslassen soll, lassen Scala implizit weiß, dass das Ergebnis des if-else Ausdrucks, als der letzten Ausdruck in der körpereigenen Funktion sollte zurückgegeben werden:
def isLast(c: Int, r: Int):Int = {
if(r == 1)
1
else if (r == c)
1
else
0 // or some other Int
}
Als letzte Anmerkung, wenn Sie eine Funktion haben, deren Name mit is
beginnt, dann sollte es wahrscheinlich einen booleschen Wert zurückgeben. Mit anderen Worten, wenn die Eingabe die letzte ist, dann true zurück, sonst false.
Dies ist ein guter Ort, um Scala zu beginnen. http://twitter.github.com/scala_school/ –