val vs var
Pengikatan yang tidak dapat dan dapat diubah.
val vs var adalah pelajaran Scala for Backend Engineering & Functional Programming gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Scala for Backend Engineering & Functional Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.
Dua Cara Memberi Nama pada Nilai
Di Scala, Anda mengikat nama ke suatu nilai menggunakan val atau var.
val membuat pengikatan tidak dapat diubah: setelah diberi nilai, pengikatan tersebut tidak akan pernah dapat menunjuk ke nilai lain. var membuat pengikatan dapat diubah yang dapat Anda beri nilai baru nanti.
Memilih di antara keduanya adalah salah satu kebiasaan pertama yang dibangun oleh seorang insinyur backend Scala.
val name = "Ada"
var score = 10Mendefinisikan val
val hanya dapat dibaca. Anda menetapkannya sekali, dan kompiler menjamin nilainya tetap sama.
Hal ini membuat kode Anda lebih mudah dipahami: val tidak akan mengejutkan Anda dengan nilai yang berubah di tempat lain.
object Main extends App {
val pi = 3.14
println(pi)
}Penetapan Ulang val Gagal
Mencoba menetapkan ulang val adalah kesalahan kompilasi, bukan kerusakan saat program berjalan. Kompiler menghentikan Anda sebelum program sempat dijalankan.
Potongan kode di bawah akan gagal dengan pesan reassignment to val.
val country = "Turkey"
country = "Spain" // error: reassignment to valMendefinisikan var
var dapat diberi nilai baru sebanyak yang Anda inginkan, selama nilai baru tersebut memiliki tipe yang kompatibel.
Gunakan var ketika suatu nilai memang perlu berubah seiring waktu, misalnya pencacah dalam perulangan.
object Main extends App {
var count = 0
count = count + 1
count = count + 1
println(count)
}var Mempertahankan Tipenya
Meskipun var dapat diberi nilai baru, tipenya tetap sejak didefinisikan.
Jika level dimulai sebagai Int, Anda tidak dapat menyimpan String di dalamnya nanti. Kompiler akan menolak ketidakcocokan tersebut.
var level = 1
level = 5 // ok, still an Int
level = "high" // error: type mismatchUtamakan val secara Bawaan
Scala idiomatis hampir selalu mengutamakan val. Ketidakberubahan menghindari seluruh kategori kesalahan dan membuat kode konkuren lebih aman.
- Gunakan
valterlebih dahulu. - Beralih ke
varhanya ketika Anda benar-benar memerlukan perubahan.
Mengubah var Menjadi val
Banyak perulangan yang tampaknya memerlukan var sebenarnya dapat ditulis dengan val dan sebuah ekspresi.
Di sini, sebuah jumlah dihitung dengan rentang dan sum, tanpa memerlukan perubahan nilai.
object Main extends App {
val total = (1 to 5).sum
println(total)
}Cakupan Pengikatan
val dan var sama-sama berada di dalam blok { ... } tempat keduanya didefinisikan.
Pengikatan yang dideklarasikan di dalam blok tidak terlihat dari luar blok tersebut. Hal ini menjaga nama tetap rapi dan mencegah penggunaan ulang yang tidak disengaja.
object Main extends App {
val outer = 1
{
val inner = 2
println(outer + inner)
}
// inner is not visible here
}val Malas
lazy val hanya dihitung saat pertama kali digunakan, lalu hasilnya disimpan.
Ini berguna untuk nilai yang mahal dihitung dan mungkin tidak selalu Anda perlukan. Isi nilainya dijalankan paling banyak sekali.
object Main extends App {
lazy val greeting = { println("computing"); "Hi" }
println("before")
println(greeting)
println(greeting)
}val dengan Tipe Eksplisit
Anda dapat memberi anotasi tipe pada pengikatan setelah titik dua. Hal ini mendokumentasikan maksud Anda dan dapat memperluas tipe secara sengaja.
Di sini, amount dideklarasikan sebagai Double, meskipun 10 tampak seperti Int.
val amount: Double = 10
val label: String = "price"val dan var Berdampingan
Keduanya berperilaku sama sampai Anda mencoba menetapkan ulang nilainya.
val x: tetapkan sekali, tetap selamanya.var y: tetapkan dan tetapkan ulang dengan bebas.
Program di bawah hanya menambah nilai var.
object Main extends App {
val base = 100
var bonus = 0
bonus = bonus + 25
println(base + bonus)
}Pemeriksaan Singkat
Uji pemahaman Anda tentang val dan var.
Ringkasan
Anda telah mempelajari dua cara mengikat nama di Scala.
valtidak dapat diubah dan merupakan pilihan bawaan.vardapat diubah dan digunakan untuk nilai yang harus berubah.- Menetapkan ulang
valmerupakan kesalahan kompilasi. - Tipe keduanya tetap;
lazy valmenunda perhitungan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “val vs var” gratis?
Ya — teks lengkap “val vs var” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Scala for Backend Engineering & Functional Programming, upgrade ke CoddyKit PRO. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “val vs var”?
Pengikatan yang tidak dapat dan dapat diubah. Kamu berlatih Scala for Backend Engineering & Functional Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Scala for Backend Engineering & Functional Programming?
Tidak diperlukan pengalaman sebelumnya. Scala for Backend Engineering & Functional Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “val vs var” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Scala for Backend Engineering & Functional Programming ini?
Ya. Setiap pelajaran Scala for Backend Engineering & Functional Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.