3
fun test(temp: Int) {
temp = 5
}
コンパイラは「valは再割り当てできません」というエラーをスローします。ローカル変数を割り当てることができません
ローカル変数はKotlinでのみ読み込まれますか?
fun test(temp: Int) {
temp = 5
}
コンパイラは「valは再割り当てできません」というエラーをスローします。ローカル変数を割り当てることができません
ローカル変数はKotlinでのみ読み込まれますか?
関数パラメータは常に読み取り専用です(つまり、val
と宣言されます)。
あなたはそれを変更したい場合は、(新しい)ローカル変数を使用する必要があります。
fun test(temp: Int) {
var myTemp = temp
myTemp = 5
}
temp
はローカル変数ではありません - それは、関数のパラメータです。それを再割り当てする必要はありません。
フォローアップの質問。なぜ関数のパラメータは読み込み専用ですか?それは何の目的ですか? – user3282666
Kotlinは、変更可能性よりも不変であることを好みます。これは、デフォルトでは読み取り専用のパラメータに反映されます。再割り当てする場合は、同じ名前の変数を使用してシャドウすることができます: 'var temp = temp' –
パラメータに値を代入することは、Javaでは悪い習慣です。関数外のオブジェクトの値が変更されると考えるかもしれません。それは禁じられており、それは良い決断だった。 –