"Ошибка: переназначение на val" будет выброшено в функцию
когда я запускаю следующие коды, выдается «ошибка: переназначение на val», кто-нибудь знает, почему?
def main(args: Array[String]) :Unit = {
var a = 10
def Fun(a:Int):Unit = {
while( a < 20 ){
println( "Value of a: " + a );
a = a + 1 // Error: reassignment to val
}
}
Fun(a)
}
Если я хочу реализовать функцию переменной плюс один в функции Fun, как ее изменить?
1 ответ
Вы скрываете внешнюю переменную с параметром методаa
который являетсяval
"автоматически".
Вы написали то же самое, что и:
var a = 10
def Fun(b:Int):Unit = {
while( b < 20 ){
println( "Value of b: " + b );
b = b + 1 // Error: reassignment to val
}
}
Fun(a)
Я предполагаю, что вы хотите удалить параметр метода, так как хотите увеличить внешнюю переменную, которая доступна при определении внутреннего метода:
var a = 10
def Fun():Unit = {
while( a < 20 ){
println( "Value of a: " + a );
a = a + 1
}
}
Fun()
Имейте в виду, что это не идиоматический код Scala, и неясно, чего вы пытаетесь достичь, поэтому я не могу предложить вам лучшее решение, если вы определенно не хотите писать такой код в реальных проектах.