Apa perbedaan antara var
dan val
di Kotlin?
Saya telah melalui tautan ini:
https://kotlinlang.org/docs/reference/properties.html
Sebagaimana dinyatakan pada tautan ini:
Sintaks penuh dari deklarasi properti read-only berbeda dari yang bisa berubah dalam dua cara: ini dimulai dengan val bukan var dan tidak memungkinkan setter.
Namun sesaat sebelum ada contoh yang menggunakan 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
}
Apa perbedaan persis antara var
dan val
?
Mengapa kita membutuhkan keduanya?
Ini bukan duplikat dari Variabel di Kotlin, perbedaan dengan Java. var vs val? karena saya bertanya tentang keraguan terkait dengan contoh khusus dalam dokumentasi dan bukan hanya secara umum.
result
tidak dapat diubah untuk merujuk ke instance berbedaAddress
, tetapi instance yang merujuknya masih dapat dimodifikasi. Hal yang sama akan berlaku di Jawa jika Anda memilikifinal Address result = new Address();
Jawaban:
Dalam kode Anda
result
tidak berubah,var
propertinya berubah. Lihat komentar di bawah ini:val
sama denganfinal
pengubah di java. Karena Anda mungkin harus tahu bahwa kami tidak dapat menetapkanfinal
variabel lagi tetapi dapat mengubah propertinya.sumber
val
danvar
digunakan untuk mendeklarasikan properti? bukan variabel?val
danvar
keduanya digunakan untuk mendeklarasikan variabel.Untuk informasi lebih lanjut apa itu
val
danvar
silakan lihat tautan di bawah inisumber
variabel yang didefinisikan dengan var dapat berubah (Baca dan Tulis)
variabel yang didefinisikan dengan val tidak dapat diubah (Hanya baca)
Kotlin dapat menghapus findViewById dan mengurangi kode untuk setOnClickListener di android studio. Untuk referensi lengkap: Fitur luar biasa Kotlin
nilai variabel yang dapat berubah dapat diubah kapan saja, sementara Anda tidak dapat mengubah nilai variabel yang tidak dapat diubah.
di mana saya harus menggunakan var dan di mana val?
gunakan var di mana nilainya sering berubah. Misalnya saat mendapatkan lokasi perangkat android
gunakan val di mana tidak ada perubahan nilai di seluruh kelas. Misalnya Anda ingin mengatur textview atau teks tombol secara terprogram.
sumber
val
gunakan untuk mendeklarasikan variabel akhir. Karakteristikval
variabelvar
adalah sebagai variabel umumKita dapat menginisialisasi nanti dengan menggunakan
lateinit
pengubah[
lateinit
Juga gunakan untuk variabel global kita tidak bisa menggunakannya untuk variabel lokal]val
inkotlin
sepertifinal
kata kunci injava
sumber
Sederhananya, var (dapat diubah) dan val (nilai yang tidak dapat diubah seperti di Java (pengubah akhir))
sumber
val adalah
immutable
dan varmutable
di Kotlin.sumber
Cukup pikirkan Val seperti Variabel akhir di java
sumber
Referensi
sumber
Anda dapat dengan mudah menganggapnya sebagai:
var
digunakan untuk setter (nilai akan berubah).val
digunakan untuk pengambil (read-only, nilai tidak akan berubah).sumber
Jika kita mendeklarasikan variabel menggunakan
val
maka itu akan menjadi variabel read-only . Kami tidak dapat mengubah nilainya. Ini seperti variabel final Java . Iniimmutable
.Tetapi jika kita mendeklarasikan variabel menggunakan
var
maka itu akan menjadi variabel yang bisa kita baca atau tulis . Kita bisa mengubah nilainya. Inimutable
.val
tidak dapat diinisialisasi akhir-akhir ini oleh kata kuncilateinit
tetapi non-primitifvar
dapat diinisialisasi akhir-akhir ini oleh kata kuncilateinit
.sumber
Pada dasarnya
var
= variabel , jadi itu bisa berubahval
= value , jadi tidak bisa diubah.sumber
val
contoh:var
contoh:Jika Anda mencoba mengubah yang tidak dapat diubah
val
, IDE akan menampilkan kesalahan:Tetapi bisa berubah
var
bisa berubah:Semoga ini membantu.
sumber
properti val mirip dengan properti final di Jawa. Anda diizinkan untuk memberikan nilai hanya untuk satu kali. Saat Anda mencoba menetapkan ulang dengan nilai untuk kedua kalinya Anda akan mendapatkan kesalahan kompilasi. Sedangkan properti var bisa berubah yang Anda bebas untuk memindahkannya kapan saja dan kapan saja Anda inginkan.
sumber
Apakah Anda perlu mengubah variabel atau mengaturnya secara permanen?
Contoh yang bagus jika itu adalah sesuatu seperti val pi5places = 3.14159 Anda akan menetapkannya sebagai
val
. Apakah ada kemungkinan Anda perlu mengubah variabel itu sekarang atau nanti, maka Anda akan menetapkannya sebagai var.Misalnya: Warna mobil, bisa jadi
var colorCar = green
. Nanti Anda bisa mengubahnyacolorCar = blue
, di mana sebagaival
, Anda tidak bisa.Tanggapan di sini tentang
mutable
danimmutable
baik-baik saja, tetapi mungkin menakutkan jika istilah-istilah ini tidak dikenal atau hanya mempelajari cara memprogram.sumber
Nilai ke
val
variabel hanya dapat ditetapkan satu kali.Meskipun Anda tidak dapat menetapkan kembali nilai tetapi Anda tentu dapat memodifikasi properti objek.
Itu berarti Anda tidak dapat mengubah referensi objek yang ditunjuk oleh variabel tetapi properti yang mendasari variabel itu dapat diubah.
Nilai ke variabel var dapat ditetapkan ulang sebanyak yang Anda inginkan.
Jelas, properti yang mendasarinya dapat diubah selama mereka tidak dinyatakan val.
sumber
Dua cara untuk membuat variabel dalam KOTLIN VAL dan VAR
1. VAL menyimpan nilai konstan. Juga disebut Final Variable
2. VAR menyimpan Nilai yang Dapat Diganti
Klik di sini misalnya
sumber
val
seperticonstant
variabel, itu sendiri tidak dapat diubah, hanya dapat dibaca, tetapi properti dari aval
dapat dimodifikasi;var
sama seperti variabel mutan dalam bahasa pemrograman lain.sumber
val tidak dapat diubah, final, nilai yang diberikan pertama tidak dapat diubah.
var bisa berubah, dialihkan, Anda dapat mengubah nilai berulang-ulang.
sumber
Keduanya,
val
danvar
dapat digunakan untuk mendeklarasikan variabel (properti lokal dan kelas).Variabel lokal :
val
mendeklarasikan variabel read-only yang hanya dapat ditugaskan satu kali, tetapi tidak dapat ditugaskan kembali .Contoh:
var
mendeklarasikan variabel yang dapat ditugaskan kembali seperti yang Anda ketahui dari Jawa (kata kunci akan diperkenalkan di Java 10, “inferensi tipe variabel lokal” ).Contoh:
Itu selalu lebih baik untuk digunakan
val
. Cobalah untuk menghindarivar
sesering mungkin!Properti kelas :
Kedua kata kunci juga digunakan untuk mendefinisikan properti di dalam kelas . Sebagai contoh, lihat yang berikut ini
data class
:The
Person
berisi dua bidang, salah satunya adalah readonly (name
). Diage
sisi lain, dapat dipindahkan setelah instantiasi kelas, melalui yang disediakansetter
. Perhatikan bahwaname
tidak akan memiliki metode penyetel yang sesuai.sumber
Kedua variabel digunakan sebagai inisialisasi
val seperti variabel konstan, Dapat dibaca, dan properti val dapat dimodifikasi.
var seperti variabel yang bisa berubah. Anda dapat mengubah nilainya kapan saja.
sumber
Singkatnya, variabel val adalah final (tidak bisa berubah) atau nilai konstan yang tidak akan diubah di masa depan dan variabel var (bisa berubah) dapat diubah di masa depan.
Lihat kode di atas. Ini adalah kelas model, akan digunakan untuk mengirimkan data. Saya telah menetapkan val sebelum variabel karena variabel ini digunakan untuk mendapatkan data.
Juga, jika Anda perlu mengatur data nanti, Anda perlu menggunakan kata kunci var sebelum variabel, jika Anda hanya perlu mendapatkan nilai satu kali kemudian gunakan kata kunci val
sumber
Normal
Val
menggunakan untukstatic
bidang seperti di Jawa sebagaiStatic Keyword
Seperti
Static
di Jawa / Sama seperti di kotlinDan
Var
menunjukkan Variable Field di Kotlin itu, Anda bisa mengubahnya.Sebagian besar
Static
digunakan ketika Anda ingin menyimpan nilai dalam memori statis sekaligus,Contoh:
Anda tidak dapat berubah, ini adalah nilai akhir dan Statis
var b=2
b=4
Kamu bisa mengubahnyasumber
val: harus menambah atau menginisialisasi nilai tetapi tidak bisa berubah. var: variabelnya dapat mengubah baris apa pun dalam kode.
sumber
Di kotlin kita dapat mendeklarasikan variabel dalam dua jenis:
val
danvar
.val
tidak dapat dipindahkan, ini berfungsi sebagai variabel akhir.Di sisi lain, var dapat dipindahkan itu bisa berubah
sumber
Keduanya adalah variabel, satu-satunya perbedaan adalah variabel Mutable dan variabel immutable dan tidak ada perbedaan lagi. var adalah variabel Mutabel dan val tidak dapat diubah. Dalam Bahasa sederhana var dapat mengubah nilai setelah nilai inisialisasi val konstan dan tidak dapat mengubah nilainya setelah inisialisasi nilai.
sumber
val
(dari nilai): Referensi tidak dapat diubah. Variabel yang dideklarasikan denganval
tidak dapat dipindahkan setelah diinisialisasi. Ini sesuai denganfinal
variabel di Jawa.var
(dari variabel): Referensi yang dapat diubah. Nilai variabel tersebut dapat diubah. Deklarasi ini sesuai dengan variabel Java reguler (non-final).sumber
Var berarti Variabel -Jika Anda menyimpan objek apa pun menggunakan 'var' itu bisa berubah dalam waktu.
Sebagai contoh:
Val berarti nilai -Ini seperti 'konstan' di java. Jika Anda menyimpan objek apa pun menggunakan 'val' itu tidak bisa berubah dalam waktu.
Sebagai contoh:
sumber
VAR digunakan untuk membuat variabel-variabel yang nilainya akan berubah dari waktu ke waktu dalam aplikasi Anda. Ini sama dengan VAR dari swift, sedangkan VAL digunakan untuk membuat variabel yang nilainya tidak akan berubah selama waktu dalam aplikasi Anda. Ini sama dengan LET of swift.
sumber
val - Immutable (setelah diinisialisasi tidak dapat dipindahkan)
var - Mutable (dapat mengubah nilai)
Contoh
di Kotlin - val n = 20 & var n = 20
Di Jawa - final n = 20; & int n = 20;
sumber
var adalah variabel yang dapat berubah dan dapat ditugaskan beberapa kali dan val adalah variabel yang tidak dapat diubah dan hanya dapat diinternalisasi satu kali.
sumber