私はScalaの初心者で、このサンプルコードを実行しようとしています
def isLast(c: Int, r: Int):Int ={
if(r == 1)
{
return 1;
}
else if (r == c){
return 1
}
}
しかし、コンパイル時にエラーが発生し、
Multiple markers at this line
- type mismatch; found : Unit required: Int
- type mismatch; found : Unit required: Int
どうか助けてください。また、Scala を学ぶのに適したサイトも教えてください。
ベストアンサー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 ??
}
r
つまり、Scalaに、が1なら1を返し、が1なら1を返すように指示していることになりr == c
ます。これで問題ありません。しかし、メソッドがIntを返したい場合は、毎r
の場合。Scala は、 が 1 でも でもないときにどの Int を返すべきかわからないため、エラーを出しますc
。
修正するelse
には、他の Int を返す句を追加します。
追加の注意点として、return
ここではキーワードを省略できますし、省略する必要があります。これにより、関数本体の最後の式である if-else 式の結果が返される必要があることが Scala に暗黙的に通知されます。
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 を返します。