Какая разница между var
и val
в Котлине?
Я прошел по этой ссылке:
https://kotlinlang.org/docs/reference/properties.html
Как указано по этой ссылке:
Полный синтаксис объявления свойства только для чтения отличается от изменяемого в двух отношениях: он начинается с val вместо var и не допускает установки.
Но перед этим есть пример, который использует сеттер.
fun copyAddress(address: Address): Address {
val result = Address() // there's no 'new' keyword in Kotlin
result.name = address.name // accessors are called
result.street = address.street
// ...
return result
}
Какая точная разница между var
и val
?
Зачем нам оба?
Это не является дубликатом из переменных в Котлин, различия с Java. вар против вал? как я спрашиваю о сомнениях, связанных с конкретным примером в документации, а не только в целом.
result
не может быть изменен для ссылки на другой экземплярAddress
, но экземпляр, на который он ссылается, все еще может быть изменен. То же самое было бы в Java, если бы у вас былfinal Address result = new Address();
Ответы:
В вашем коде
result
не меняется, егоvar
свойства меняются. Смотрите комментарии ниже:val
такой же, какfinal
модификатор в Java. Вероятно, вы должны знать, что мы не можемfinal
снова присвоить переменную, но можем изменить ее свойства.источник
val
иvar
используются для объявления свойств? не переменная?val
иvar
оба используются для объявления переменной.Для получения дополнительной информации , что
val
иvar
смотрите ниже ссылкуисточник
переменные, определенные с помощью var, являются изменяемыми (чтение и запись)
переменные, определенные с помощью val, являются неизменяемыми (только для чтения)
Kotlin может удалить findViewById и уменьшить код для setOnClickListener в Android Studio. Для полной справки: Kotlin потрясающие функции
Значение изменяемых переменных может быть изменено в любое время, в то время как вы не можете изменить значение неизменяемых переменных.
где я должен использовать var и где val?
используйте var, где значение часто меняется. Например, при получении местоположения устройства Android
используйте val, где нет изменений в значении во всем классе. Например, вы хотите установить текстовое представление или текст кнопки программно.
источник
val
использовать для объявления окончательной переменной. Характеристикиval
переменныхvar
как общая переменнаяМы можем инициализировать позже, используя
lateinit
модификатор[
lateinit
также использовать для глобальной переменной, мы не можем использовать ее для локальной переменной]val
вkotlin
это какfinal
ключевое слово вjava
источник
Проще говоря, var (mutable) и val (неизменяемые значения, как в Java (модификатор final))
источник
Валь
immutable
и Варmutable
в Котлине.источник
Просто подумайте, что Val, как окончательная переменная в Java
источник
Ссылка
источник
Вы можете легко думать это как:
var
используется для установки (значение изменится).val
используется для получения (только для чтения, значение не изменится).источник
Если мы объявим переменную используя,
val
то это будет переменная только для чтения . Мы не можем изменить это значение. Это как финальная переменная Java . Этоimmutable
.Но если мы объявим переменную используя,
var
то это будет переменная, которую мы можем читать или писать . Мы можем изменить это значение. Этоmutable
.val
не может быть инициализирован в последнее время ключевым словом,lateinit
но не примитивvar
может быть инициализирован в последнее время ключевым словомlateinit
.источник
В принципе
var
= переменная , поэтому она может изменитьсяval
= значение , поэтому оно не может измениться.источник
val
пример :var
пример :Если вы попытаетесь изменить неизменяемый
val
, IDE покажет вам ошибку:Но изменчивый
var
можно изменить:Надеюсь это поможет.
источник
Свойство val похоже на конечное свойство в Java. Вам разрешено присваивать ему значение только один раз. При попытке переназначить его значением во второй раз вы получите ошибку компиляции. Принимая во внимание, что свойство var является изменяемым, и вы можете переназначить его в любое время и в любое время.
источник
Вам нужно изменить переменную или установить ее навсегда?
Хороший пример, если это что-то вроде val pi5places = 3.14159, вы бы установили его как
val
. Есть ли вероятность, что вам нужно изменить эту переменную сейчас или позже, тогда вы бы установили ее как var.Например: цвет автомобиля, может быть
var colorCar = green
. Позже вы можете изменить тоcolorCar = blue
, что в качествеval
, вы не можете.Ответы здесь относительно
mutable
иimmutable
хорошо, но могут быть страшными, если эти термины не очень хорошо известны или только начинают изучать, как программировать.источник
Значение
val
переменной можно присвоить только один раз.Хотя вы не можете переназначить значение, но вы, безусловно, можете изменить свойства объекта.
Это означает, что вы не можете изменить ссылку на объект, на который указывает переменная, но базовые свойства этой переменной могут быть изменены.
Значение переменной var можно переназначать столько раз, сколько вы хотите.
Очевидно, что лежащие в его основе свойства могут быть изменены, если они не объявлены как val.
источник
Два способа создания переменных в KOTLIN VAL и VAR
1. VAL хранит постоянные значения. Также называется финальной переменной
2. VAR хранит изменяемые значения
Нажмите здесь для примера
источник
val
какconstant
переменная, сама не может быть изменена, только может быть прочитана, но свойстваval
могут быть изменены;var
точно так же как переменная мутанта в других языках программирования.источник
val неизменяемый, окончательный, первое назначенное значение не может быть изменено.
var изменяемый, переназначаемый, вы можете изменять значение снова и снова.
источник
И то,
val
и другоеvar
можно использовать для объявления переменных (локальных и классовых свойств).Локальные переменные :
val
объявляет переменные только для чтения, которые могут быть назначены только один раз, но не могут быть переназначены .Пример:
var
объявляет переназначаемые переменные, как вы их знаете из Java (ключевое слово будет введено в Java 10, «вывод типа локальной переменной» ).Пример:
Это всегда предпочтительнее использовать
val
. Старайтесь избегатьvar
как можно чаще!Свойства класса :
Оба ключевых слова также используются для определения свойств внутри классов . В качестве примера рассмотрим следующее
data class
:Person
Содержит два поля, один из которых предназначен только для чтения (name
). Сage
другой стороны, они могут быть переназначены после создания класса с помощью предоставленногоsetter
. Обратите внимание, чтоname
не будет соответствующего метода установки.источник
Обе переменные используются в качестве инициализации
val, как постоянная переменная, может быть читаемым, а свойства val могут быть изменены.
var как изменяемая переменная Вы можете изменить значение в любое время.
источник
Короче говоря, переменная val является конечной (не изменяемой) или постоянной величиной, которая не будет изменена в будущем, а переменная var (изменяемой) может быть изменена в будущем.
Смотрите приведенный выше код. Это модельный класс, будет использоваться для передачи данных. Я установил val перед переменной, потому что эта переменная использовалась для получения данных.
Также, если вам нужно установить данные позже, вам нужно использовать ключевое слово var перед переменной, если вам нужно получить значение только один раз, тогда используйте ключевое слово val
источник
Нормальный
Val
использует дляstatic
поля, как в Java, какStatic Keyword
Как
Static
в Java / То же, что в KotlinИ
Var
обозначает переменное поле в Kotlin, что вы можете изменить его.В основном
Static
используется, когда вы хотите сохранить значение в статической памяти сразу,Пример:
Вы не можете изменить, это окончательное значение и статический
var b=2
b=4
Вы можете изменить этоисточник
val: должен добавить или инициализировать значение, но не может измениться. var: эта переменная может изменяться в любой строке кода.
источник
В kotlin мы можем объявить переменную в двух типах:
val
иvar
.val
не может быть переназначен, он работает как конечная переменная.С другой стороны, var может быть переназначен, он изменчив
источник
Оба являются переменными, с той лишь разницей, что изменяемая переменная и неизменяемая переменная, и нет больше разницы. var - изменяемая переменная, а val - неизменный. В простом языке var может изменить это значение после того, как значение инициализации является постоянным, и он не может изменить его значение после инициализации значения.
источник
val
(из значения): Неизменная ссылка. Переменная, объявленная с,val
не может быть переназначена после инициализации. Это соответствуетfinal
переменной в Java.var
(из переменной): изменяемая ссылка. Значение такой переменной можно изменить. Это объявление соответствует обычной (не финальной) переменной Java.источник
Var означает переменную - если вы сохранили какой-либо объект, используя 'var', он может измениться со временем.
Например:
Val означает значение. Это похоже на «константу» в Java. Если вы сохранили какой-либо объект, используя «val», он не может измениться во времени.
Например:
источник
VAR используется для создания тех переменных, значение которых будет меняться с течением времени в вашем приложении. Это то же самое, что VAR swift, тогда как VAL используется для создания тех переменных, чье значение не изменится с течением времени в вашем приложении. Это то же самое, что LET swift.
источник
val - неизменный (после инициализации не может быть переназначен)
var - Mutable (может изменить значение)
пример
в Котлине - val n = 20 и var n = 20
В Java - окончательный int n = 20; & int n = 20;
источник
var является изменяемой переменной и может быть назначен несколько раз, а val является неизменяемой переменной и может быть инициализирован только один раз.
источник