scala if elseの書き方 質問する

scala if elseの書き方 質問する

私は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 を返します。

おすすめ記事