Jaka jest różnica między var
i val
w Kotlin?
Przejrzałem ten link:
https://kotlinlang.org/docs/reference/properties.html
Zgodnie z tym linkiem:
Pełna składnia deklaracji właściwości tylko do odczytu różni się od zmiennej na dwa sposoby: zaczyna się od val zamiast var i nie pozwala na ustawienie.
Ale tuż przed przykładem jest setter.
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
}
Jaka jest dokładna różnica między var
i val
?
Dlaczego potrzebujemy obu?
Jest to nie duplikat od zmiennych w Kotlin, różnic z Java. var vs val? ponieważ pytam o wątpliwości związane z konkretnym przykładem w dokumentacji, a nie tylko ogólnie.
result
nie można go zmienić, aby odwoływał się do innego wystąpieniaAddress
, ale wystąpienie, którego dotyczy, może być nadal modyfikowane. To samo byłoby prawdą w Javie, gdybyś miałfinal Address result = new Address();
Odpowiedzi:
W kodzie
result
się nie zmienia, zmieniają się jegovar
właściwości. Zobacz komentarze poniżej:val
jest taki sam jakfinal
modyfikator w Javie. Jak zapewne powinieneś wiedzieć, że nie możemyfinal
ponownie przypisać zmiennej, ale możemy zmienić jej właściwości.źródło
val
ivar
są używane do deklarowania właściwości? nie zmienny?val
ivar
oba służą do deklarowania zmiennej.Aby uzyskać więcej informacji, co znajduje się
val
ivar
zobacz poniższy linkźródło
zmienne zdefiniowane za pomocą var są zmienne (odczyt i zapis)
zmienne zdefiniowane za pomocą val są niezmienne (tylko do odczytu)
Kotlin może usunąć findViewById i zmniejszyć kod dla setOnClickListener w Android Studio. Pełny opis : niesamowite funkcje Kotlin
wartość zmiennych zmiennych można zmienić w dowolnym momencie, natomiast nie można zmienić wartości zmiennych niezmiennych.
gdzie powinienem używać var i gdzie val?
użyj var, gdzie wartość często się zmienia. Na przykład podczas uzyskiwania lokalizacji urządzenia z systemem Android
użyj val, gdy nie ma zmiany wartości w całej klasie. Na przykład chcesz programowo ustawić widok tekstu lub tekst przycisku.
źródło
val
służy do deklarowania zmiennej końcowej. Charakterystykaval
zmiennychvar
jest jako zmienna ogólnaMożemy zainicjować później za pomocą
lateinit
modyfikatora[
lateinit
użyj także dla zmiennej globalnej, nie możemy użyć jej dla zmiennej lokalnej]val
inkotlin
jest jakfinal
słowo kluczowe wjava
źródło
Po prostu var (mutable) i val (niezmienne wartości jak w Javie (modyfikator końcowy))
źródło
val jest
immutable
i var jestmutable
w Kotlin.źródło
Po prostu pomyśl Val jak ostatnia zmienna w java
źródło
Odniesienie
źródło
Możesz łatwo pomyśleć to jako:
var
służy do ustawienia (wartość ulegnie zmianie).val
służy do pobierania (tylko do odczytu, wartość się nie zmieni).źródło
Jeśli zadeklarujemy zmienną za pomocą
val
, będzie to zmienna tylko do odczytu . Nie możemy zmienić jego wartości. To jest jak ostatnia zmienna Java . Jestimmutable
.Ale jeśli zadeklarujemy zmienną za pomocą
var
, będzie to zmienna, którą możemy odczytać lub zapisać . Możemy zmienić jego wartość. Jestmutable
.val
nie może być ostatnio zainicjowany przez słowo kluczowe,lateinit
ale nieprymitywnevar
może być ostatnio zainicjowane przez słowo kluczowelateinit
.źródło
Gruntownie
var
= zmienna , więc może się zmienićval
= wartość , więc nie można jej zmienić.źródło
val
przykład:var
przykład:Jeśli spróbujesz zmienić niezmienny
val
, IDE wyświetli błąd:Ale zmienne
var
można zmienić:Mam nadzieję że to pomoże.
źródło
Właściwość val jest podobna do właściwości końcowej w Javie. Możesz przypisać mu wartość tylko raz. Podczas drugiej próby przypisania wartości wartością pojawi się błąd kompilacji. Podczas gdy własność var jest zmienna, którą możesz dowolnie przypisać, kiedy chcesz i na dowolny czas.
źródło
Czy musisz zmienić zmienną lub ustawić ją na stałe?
Dobry przykład, jeśli jest to coś w rodzaju val pi5places = 3.14159 , ustawiłbyś to jako
val
. Czy istnieje możliwość, że musisz zmienić tę zmienną teraz lub później, a następnie ustaw ją jako var.Na przykład: Kolor samochodu może być
var colorCar = green
. Później możesz to zmienićcolorCar = blue
, gdyval
nie możesz tego zrobić.Odpowiedzi tutaj dotyczące
mutable
iimmutable
są w porządku, ale mogą być przerażające, jeśli te terminy nie są dobrze znane lub po prostu zaczynają się uczyć programowania.źródło
Wartość do
val
zmiennej można przypisać tylko raz.Chociaż nie można ponownie przypisać wartości, ale z pewnością można zmodyfikować właściwości obiektu.
Oznacza to, że nie można zmienić odwołania do obiektu, na który wskazuje zmienna, ale można zmienić podstawowe właściwości tej zmiennej.
Wartość zmiennej var można przypisać dowolną liczbę razy.
Oczywiście właściwości leżące u jego podstaw można zmieniać, o ile nie zostaną zadeklarowane jako val.
źródło
Dwa sposoby tworzenia zmiennej w KOTLIN VAL i VAR
1. VAL przechowuje wartości stałe. Nazywany także zmienną końcową
2. VAR przechowuje zmienne wartości
Kliknij tutaj na przykład
źródło
val
podobnie jakconstant
zmienna, sama nie może zostać zmieniona, można ją tylko odczytać, ale właściwości aval
można modyfikować;var
podobnie jak zmienna mutanta w innych językach programowania.źródło
val jest niezmienny, końcowy, pierwszej przypisanej wartości nie można zmienić.
var jest zmienny, można go ponownie przypisać, możesz zmieniać wartość w kółko.
źródło
Zarówno
val
ivar
mogą być używane do deklarowania zmiennych (właściwości lokalne i właściwości klasy).Zmienne lokalne :
val
deklaruje zmienne tylko do odczytu, które można przypisać tylko raz, ale nie można ich ponownie przypisać .Przykład:
var
deklaruje zmienne, które można ponownie przypisać z języka Java (słowo kluczowe zostanie wprowadzone w Javie 10, „wnioskowanie typu zmiennej lokalnej” ).Przykład:
Zawsze lepiej jest używać
val
. Staraj się unikaćvar
tak często, jak to możliwe!Właściwości klasy :
Oba słowa kluczowe są również używane do definiowania właściwości wewnątrz klas . Jako przykład, spójrz na następujące
data class
:Person
Zawiera dwa pola, z których jeden jest tylko do odczytu (name
). Zage
drugiej strony, można ponownie przypisać po utworzeniu instancji klasy, za pośrednictwem podanegosetter
. Zauważ, żename
nie będzie mieć odpowiedniej metody ustawiania.źródło
Obie zmienne są używane jako inicjalizacja
val jak stała zmienna, może być czytelny, a właściwości val można modyfikować.
var podobnie jak zmienna zmienna. możesz zmienić wartość w dowolnym momencie.
źródło
Krótko mówiąc, zmienna val jest wartością końcową (niemodyfikowalną) lub stałą wartością, która nie będzie zmieniana w przyszłości, a zmienną var (zmienną) można zmienić w przyszłości.
Zobacz powyższy kod. Jest to klasa modelowa, która będzie używana do przekazywania danych. Mam ustawiony val przed zmienną, ponieważ zmienna ta została wykorzystana w celu uzyskania danych.
Ponadto, jeśli chcesz ustawić dane później, musisz użyć słowa kluczowego var przed zmienną, jeśli potrzebujesz tylko raz uzyskać wartość, użyj słowa kluczowego val
źródło
Normalna
Val
używa dlastatic
pola jak w Javie jakoStatic Keyword
Jak
Static
w Javie / Taki sam jak w kotlinI
Var
oznacza zmienne pole w Kotlinie, że możesz to zmienić.Najczęściej
Static
jest używany, gdy chcesz jednocześnie zapisać wartość w pamięci statycznej,Przykład:
Nie można zmienić, jest to wartość końcowa i statyczna
var b=2
b=4
Możesz to zmienićźródło
val: należy dodać lub zainicjować wartość, ale nie można jej zmienić. var: zmienna może zmieniać się w dowolnym wierszu kodu.
źródło
W kotlin możemy zadeklarować zmienną w dwóch typach:
val
ivar
.val
nie można go ponownie przypisać, działa jako zmienna końcowa.Z drugiej strony var może zostać ponownie przypisany, jest zmienny
źródło
Oba są zmienne, jedyną różnicą jest zmienna zmienna i zmienna niezmienna i nie ma już żadnej różnicy. var jest zmienną zmienną, a val jest niezmienny. W prostym języku var może zmieniać wartość po inicjalizacji wartość val jest stała i nie może jej zmienić po inicjalizacji wartości.
źródło
val
(od wartości): Niezmienne odniesienie. Zmiennej zadeklarowanej zaval
pomocą nie można ponownie przypisać po jej zainicjowaniu. Odpowiada tofinal
zmiennej w Javie.var
(ze zmiennej): Zmienne odniesienie. Wartość takiej zmiennej można zmienić. Ta deklaracja odpowiada zwykłej (nie ostatecznej) zmiennej Java.źródło
Var oznacza Zmienną - Jeśli zapisałeś dowolny obiekt za pomocą „var” , może on ulec zmianie w czasie.
Na przykład:
Val oznacza wartość - To jest jak „stała” w java. Jeśli zapisałeś dowolny obiekt używając „val”, to nie mógł się zmienić w czasie.
Na przykład:
źródło
VAR służy do tworzenia tych zmiennych, których wartość zmienia się w miarę upływu czasu w twojej aplikacji. Jest to to samo, co VAR dla swift, natomiast VAL służy do tworzenia tych zmiennych, których wartość nie zmieni się z upływem czasu w twojej aplikacji. Jest to to samo, co LET dla swift.
źródło
val - Niezmienny (po zainicjowaniu nie można go ponownie przypisać)
var - Zmienny (może zmieniać wartość)
Przykład
w Kotlinie - val n = 20 i var n = 20
W Javie - końcowy int n = 20; i int n = 20;
źródło
var jest zmienną zmienną i może być przypisywana wiele razy, a val jest zmienną niezmienną i może być zainicjalizowany tylko raz.
źródło