unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Konstanta

Konstanta #

Dalam pemrograman, konstanta adalah nilai yang tidak dapat diubah setelah ditetapkan. Konstanta berguna ketika Anda ingin memastikan bahwa nilai tertentu tidak dapat diubah selama eksekusi program. Dalam Dart, konstanta dideklarasikan menggunakan kata kunci const atau final, dan kedua kata kunci ini memiliki kegunaan yang sedikit berbeda.

Kata Kunci const #

Kata kunci const digunakan untuk mendeklarasikan nilai yang benar-benar konstan, yang artinya nilai tersebut sudah ditentukan pada waktu kompilasi (compile-time) dan tidak bisa diubah lagi. Nilai yang ditetapkan menggunakan const tidak hanya tidak dapat diubah, tetapi juga dianggap sebagai nilai immutable (tidak bisa diubah), yang memungkinkan Dart untuk melakukan optimasi tertentu.

Sintaks:

const namaVariabel = nilai;

Contoh:

const int maxLoginAttempts = 3;
const double pi = 3.14;

Pada contoh di atas, maxLoginAttempts dan pi adalah konstanta yang nilainya ditentukan pada waktu kompilasi dan tidak dapat diubah selama eksekusi program.

Konstanta pada Objek: #

Selain nilai primitif seperti int atau double, const juga bisa digunakan untuk mendeklarasikan objek yang konstan. Objek yang dideklarasikan sebagai const harus diinisialisasi dengan nilai yang juga konstan, dan objek tersebut menjadi immutable.

Contoh:

class Point {
  final int x;
  final int y;

  const Point(this.x, this.y);
}

void main() {
  const point1 = Point(0, 0);
  const point2 = Point(1, 2);

  print(point1.x); // Output: 0
  print(point2.y); // Output: 2
}

Dalam contoh di atas, Point adalah sebuah kelas dengan dua properti x dan y. Objek point1 dan point2 yang dibuat dengan const tidak bisa diubah setelah diciptakan.

Konstanta yang Bersifat Compile-Time: #

Jika suatu nilai tidak dapat dihitung pada waktu kompilasi, maka nilai tersebut tidak dapat digunakan dengan const. Sebagai contoh, operasi yang melibatkan input dari pengguna atau nilai yang bergantung pada hasil runtime tidak dapat menjadi const.

Contoh yang Salah:

void main() {
  const currentTime = DateTime.now(); // Error, karena DateTime.now() adalah runtime
}

Pada contoh di atas, DateTime.now() adalah nilai runtime yang tidak dapat ditentukan pada waktu kompilasi, sehingga tidak dapat digunakan dengan const.

Kata Kunci final #

Kata kunci final digunakan untuk mendeklarasikan sebuah variabel yang nilainya ditetapkan hanya sekali dan tidak bisa diubah setelah itu. Namun, berbeda dengan const, nilai final tidak harus diketahui pada waktu kompilasi, dan dapat ditentukan pada waktu eksekusi (runtime).

Sintaks:

final namaVariabel = nilai;

Contoh:

final int maxLoginAttempts = 3;
final DateTime currentTime = DateTime.now();

Pada contoh di atas, maxLoginAttempts adalah final karena nilainya tidak akan berubah setelah ditetapkan, sementara currentTime adalah variabel yang mendapatkan nilai pada waktu runtime, tetapi setelah diinisialisasi, nilainya tidak bisa diubah.

Perbedaan Antara const dan final: #

  • const: Nilai harus diketahui pada waktu kompilasi, dan nilai tersebut adalah immutable. Digunakan ketika Anda ingin mendefinisikan nilai yang benar-benar konstan, misalnya untuk mendefinisikan konstanta seperti nilai π (3.14), atau mendefinisikan objek yang tidak akan berubah selama eksekusi program.

  • final: Nilai tidak harus diketahui pada waktu kompilasi dan bisa ditetapkan pada waktu runtime. Digunakan ketika Anda ingin mendefinisikan variabel yang nilainya tidak akan diubah setelah diinisialisasi, tetapi nilainya mungkin baru diketahui pada waktu eksekusi, misalnya waktu saat program dijalankan (DateTime.now()).

Konstanta dalam Kelas dan Fungsi #

Dalam Dart, Anda juga bisa menggunakan const dan final dalam kelas dan fungsi:

Contoh final dalam Kelas:

class Circle {
  final double radius;
  final double area;

  Circle(this.radius) : area = 3.14 * radius * radius;
}

void main() {
  final circle = Circle(5);
  print(circle.area); // Output: 78.5
}

Pada contoh di atas, radius dan area adalah properti final yang nilainya tidak bisa diubah setelah objek Circle dibuat.

Contoh const dalam Fungsi:

class Circle {
  final double radius;
  const Circle(this.radius);

  double get area => 3.14 * radius * radius;
}

void main() {
  const circle = Circle(5);
  print(circle.area); // Output: 78.5
}

Pada contoh ini, circle adalah objek konstan yang dibuat dengan const, sehingga semua propertinya juga harus bersifat konstan atau final.

Penggunaan Konstanta Global: #

Kadang-kadang, konstanta digunakan pada level global (di luar fungsi atau kelas) untuk mendefinisikan nilai yang akan digunakan di berbagai bagian program.

Contoh:

const double gravity = 9.8;
const int maxUsers = 100;

void main() {
  print("Gravity: $gravity");
  print("Max Users: $maxUsers");
}

Pada contoh di atas, gravity dan maxUsers adalah konstanta global yang dapat digunakan di berbagai bagian program tanpa risiko nilai tersebut berubah.

Kesimpulan #

Konstanta dalam Dart adalah alat yang penting untuk memastikan bahwa nilai-nilai tertentu tidak berubah selama eksekusi program. Dengan menggunakan const, Anda bisa mendefinisikan nilai yang tetap pada waktu kompilasi dan bersifat immutable, sementara dengan final, Anda bisa menetapkan nilai yang tidak akan diubah setelah diinisialisasi, bahkan jika nilai tersebut baru diketahui pada waktu runtime. Memahami perbedaan antara const dan final serta penggunaannya dalam berbagai konteks akan membantu Anda menulis kode yang lebih aman dan efisien.

« Variabel
Tipe Data »