Tuesday, January 21, 2025
HomeLập Trình DartConstant Constructor - Lập trình Dart

Constant Constructor – Lập trình Dart

Constant constructor là một constructor sẽ tạo ra constant object, là một object không thay đổi. Constant object là object có giá trị không thay đổi. Sử dụng từ khoá const để khai báo.

Lưu ý: const giúp tạo object có giá trị không đổi vì vậy nó giúp cải thiện hiệu suất của chương trình.

Quy tắc:

Tấc cả properties trong class phải là final
Constant constructor không chứa body
Chỉ class chứa const constructor mới khởi tạo object có keyword const

Khai báo Constant constructor

void main() {
  // Có dùng const thì 2 object sẽ có cùng hash code
  var p1 = const Person("Elon Musk", 49);
  var p2 = const Person("Elon Musk", 49);
  print("The p1 hash code is ${p1.hashCode}");
  print("The p2 hash code is ${p2.hashCode}");

  // Không dùng const thì 2 object sẽ có hash code khác nhau
  var p3 = Person("Donald Trump", 78);
  var p4 = Person("Donald Trump", 78);
  print("The p3 hash code is: ${p3.hashCode}");
  print("The p4 hash code is: ${p4.hashCode}");
}

class Person {
  final String name;
  final int age;
  const Person(this.name, this.age);
}

Kết quả

The p1 hash code is 94814997
The p2 hash code is 94814997
The p3 hash code is: 417683447
The p4 hash code is: 696146440

Ví dụ trên khi dùng const nếu object cùng dữ liệu sẽ chỉ tạo ra cùng một hashcode do đó sẽ tiết kiệm bộ nhớ, tăng hiệu suất. Lưu ý, Hash code của const object sinh ra ở lúc compile time và non-const object sinh ra lúc runtime.

Tạo Const Named Constructor

void main() {
  const p1 = Person(name: 'Max', age: 30);
  print(p1.name); 
  print(p1.age);
}

class Person {
  final String? name;
  final int? age;
  const Person({this.name, this.age});
}

Nguyễn Minh Châu
Nguyễn Minh Châuhttps://nhatkydev.com
Hi guys ! I'm a software developer. I love programming and new technologies. I create non-professional content on this website, you can only view it for reference purposes.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular