Variabel, final, dan const
Menyimpan data dengan var, final, dan const: kapan pakai yang mana dan apa bedanya.
Menyimpan data dengan variabel
Variabel adalah kotak bernama untuk menyimpan data. Di Dart, cara paling umum mendeklarasikannya:
void main() {
var nama = 'Rizky';
var umur = 17;
print(nama);
print(umur);
}Kata kunci var membuat Dart menebak tipe data dari nilai awalnya. Karena 'Rizky' adalah teks, variabel nama bertipe String selamanya. Coba ubah nama = 123; dan Dart akan protes: tipe tidak cocok.
Kamu juga bisa menulis tipenya secara eksplisit:
String nama = 'Rizky';
int umur = 17;
double tinggi = 170.5;
bool lulus = true;Penulisan eksplisit lebih jelas dibaca orang lain. Untuk seri ini kita sering pakai var supaya ringkas, tapi di proyek nyata tipe eksplisit lebih disukai.
final: sekali isi, tidak bisa diubah
final dipakai untuk nilai yang hanya diisi sekali lalu tidak berubah lagi:
void main() {
final kota = 'Bandung';
// kota = 'Jakarta'; // ERROR: tidak bisa diubah
print(kota);
}Bedanya dengan var: variabel var boleh di-assign ulang, final tidak boleh.
const: nilai tetap sejak ditulis
const mirip final, tapi nilainya harus sudah diketahui saat kode ditulis (compile-time constant):
void main() {
const pi = 3.14159;
const namaApp = 'KalkulatorKu';
print(pi);
}Contoh yang tidak bisa pakai const:
void main() {
// const waktu = DateTime.now(); // ERROR: nilainya baru tahu saat program jalan
final waktu = DateTime.now(); // ini boleh, karena final diisi saat runtime
print(waktu);
}Aturan praktisnya: kalau nilainya literal yang kamu ketik langsung (angka, teks), pakai const. Kalau nilainya hasil perhitungan saat program jalan tapi tidak akan berubah lagi, pakai final.
Kapan pakai yang mana?
| Kata kunci | Bisa diubah? | Nilai diketahui kapan? | Contoh |
|---|---|---|---|
var | Ya | Saat program jalan | counter, input user |
final | Tidak | Saat program jalan | waktu sekarang, hasil API |
const | Tidak | Saat kode ditulis | pi, nama aplikasi |
Catatan teknis: Pemula sering bingung
finalvsconst. Ingat kalimat ini: semua const itu final, tapi tidak semua final itu const. Kalau ragu, pakaifinaldulu, karenafinaltidak pernah salah untuk nilai yang tidak berubah.consthanya untuk nilai yang benar-benar tetap seperti angka dan teks literal.
Latihan cepat
Tebak output kode ini sebelum dijalankan:
void main() {
var skor = 10;
skor = skor + 5;
final nama = 'Skor akhir';
print('$nama: $skor');
}Jawabannya: Skor akhir: 15. Tanda $ di dalam string dipakai untuk menyisipkan nilai variabel, ini disebut string interpolation dan akan sering kita pakai.