Sassyブログ

好きなことで暮らしを豊かにするブログ

scalaのコンパイルエラー「value += is not a member of Int」とは?

現在仕事ではScalaを触ってます。 期間は1か月満たないくらいです。

今後のために、エラー内容に対する対処方法などをまとめていこうと思います。

今回のエラーはこちら

value += is not a member of Int

google翻訳すると「値+ =はIntのメンバーではありません」

これだと正直すぐ分かりませんね。

ちなみにscalaではインクリメント演算子がないため、数値を増分させたいなどの場合+=というメソッドを使用します。

んで、エラー内容の対処方法を結論から言うと、 増分させようとしている変数がvalで定義されているからvarにしてねということです。

確かにval定義されたフィールドは不変なので値の再代入はできないですし。

なぜこのようなエラーに直面したのかというと

メソッドで受け取った引数の値を増分させたかったからです。

コードは例ですが以下のような感じです。

object sample {

  def main(args: Array[String]): Unit = {
    val num = sample(0)
  }

  private def sample(target: Int): Int = {
    target += 1
  }
}

つまり、受け取った引数の変数はvalで定義されているということになります。

なのでScalaでは受け取った引数の値は変更できないことに注意してください。

ここら辺の内容って以下の参考書にでも載っているのかな?

今度ゆっくり調べようと思います。

以上