Возможно ли изменить значение поля val
? Если это так, это делается только через конструкторы и нигде в программе? Использование val
означает, что память не может быть изменена? Например: val x = 5
Могу ли я снова использовать x
, чтобы указать другое местоположение с различным значением?Изменение значения поля val
ответ
Вкратце: Нет, вы не можете. Это пункт непреложности, гарантирующий, что вы можете всегда быть уверенным, что значение остается неизменным.
Вот почему есть опция immutables [Vals] и mutables [вары] это гибкая и позволяет выбрать в зависимости от ваших потребностей. Выберите свой выбор и действуйте с его правилами.
val неизменный. Если вы хотите изменить значение, вы должны использовать var вместо этого.
Если вы хотите поле, чтобы быть изменяемым, вы должны объявить его как var
вместо val
. Если по какой-то причине вы не можете изменить на var
и по-прежнему необходимо изменить его значение, вы можете сделать это с помощью отражения. не
class ModifyVal {
val x = 5
}
object ModifyVal {
def main(args: Array[String]): Unit = {
val instance = new ModifyVal()
println(instance.x) // 5
// instance.x = 10 doesn't compile: Reassignment to val
val fieldX = instance.getClass.getDeclaredField("x")
fieldX.setAccessible(true)
fieldX.setInt(instance, 10)
println(instance.x) // 10
}
}
По общему правилу (не прибегая к искривлениям, что деформирует намерение языка), нет, вы не можете изменить val
, не должны вы хотите. Вместо этого, если вы хотите придерживаться функционального стиля программирования, подумайте о создании копии содержащего экземпляра с измененным значением для поля val
. Классы Дело уже в этом помочь, предоставляя copy
конструктор для того, чтобы такого рода манипуляции:
case class Person(name: String, age: Int) {
def birthday = copy(age = age + 1) // returns a new Person with the same name, but one year older
}
вал, грубо говоря, означает постоянную (окончательный в Java).
При объявлении, вал должны быть назначены на то, либо значение
val name: String // compilation error
val name : String = "Hello"
или ничего (хотя никто этого не делает)
val name : String = _
После Вэл назначен, он не может переназначить.
Неизменимость - полезная характеристика, которая сильно поддерживается Scala. Это способствует написанию кода, который не содержит побочных эффектов и потокобезопасности. Вот почему Scala - хороший выбор для масштабируемых и параллельных приложений.
Особый вид непреложности в Scala - будущее. Будущее является контейнером с однократной записью - после того, как будущее будет завершено, оно является фактически неизменным.
- 1. Изменение значения поля ввода
- 2. jQuery .val изменение не меняет входное значение
- 3. Изменение значения поля поля по щелчку
- 4. Изменение значения текстового поля на основе флажка
- 5. PHP Изменение значения замененного поля
- 6. изменение значения поля динамически (OpenERP)
- 7. Mysql, Проверить изменение значения поля?
- 8. Динамическое изменение значения скрытого поля
- 9. изменение значения входного текстового поля
- 10. Динамическое изменение значения текстового поля?
- 11. Изменение значения поля Строковая переменная
- 12. Изменение значения поля не сохраняется
- 13. Изменение значения поля массива с помощью jQuery
- 14. изменение значения динамически генерируемого поля ввода jquery
- 15. Изменение значения текстового поля с помощью jQuery
- 16. Изменение значения поля с JavaScript на отправить
- 17. Изменение Scala ленивое поведение VAL
- 18. Изменение стиля или значения для .val() в jQuery?
- 19. jQuery - Обнаружить изменение значения, которое использует функцию .val()
- 20. Получение значения поля класса case с помощью val
- 21. jquery val() или получение значения текстового поля по id
- 22. val() не вызывает изменение() в jQuery
- 23. Изменение значения текстового поля при выборе файла
- 24. JQuery Изменение attr val перед добавлением
- 25. Получение пустого значения с val()
- 26. jquery parseFloat присвоение значения val
- 27. Неверный возврат значения по val
- 28. Прослушать изменение значения поля с помощью jQuery
- 29. Изменение значения поля в форме Drupal
- 30. изменение значения текстового поля в C#