openplanning

Biến trong ngôn ngữ Dart

Xem thêm các chuyên mục:

Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- Biến là gì?

Trong ngôn ngữ lập trình Dart, biến (variable) là một cái tên (một định danh) trỏ đến một địa chỉ lưu trữ dữ liệu trên bộ nhớ.
Ví dụ:

var myVariable1 = 100;
  • var là một từ khoá để khai báo một biến.
  • myVariable1 là tên biến.
  • 100 là giá trị của biến này.
Sau đây là các quy tắc đặt tên cho biến:
  • Không thể sử dụng từ khoá để đặt tên cho biến. Chẳng hạn "var" là một từ khoá, nó không thể được sử dụng để đặt tên cho biến.
  • Tên của biến bao gồm các chữ cái trong bảng chữ cái latinh và các chữ số.
  • Tên của biến không được chứa khoảng trắng hoặc các ký tự đặc biệt ngoại trừ dấu gạch dưới ( _ ) hoặc ký hiệu đô la ( $ ).
  • Tên của biến không được bắt đầu bởi một chữ số.

2- Khai báo biến với từ khoá var

Khai báo biến là một việc bắt buộc mỗi khi bạn sử dụng một cái tên nào đó để định danh một biến, với mỗi cái tên bạn chỉ cần khai báo nó một lần.
Cách đơn giản nhất để khai báo một biến là sử dụng từ khoá var:

var myVariable1 = "My Text"; // Declare a variable and assign a value to it.

var myVariable2; // Declare a variable but have not assigned a value.
Bạn có thể gán một giá trị mới cho biến, điều này có nghĩa là biến đã trỏ tới một địa chỉ lưu trữ dữ liệu mới trên bộ nhớ.

myVariable1 = "New My Text";
Ví dụ:
Variable_var_ex1.dart

void main() {
  var myVariable1 = "My Text";
  print(myVariable1);

  myVariable1 = "New My Text";  
  print(myVariable1);
}
Output:

My Text
New My Text
Việc sử dụng từ khoá "var" để khai báo một biến có nghĩa là bạn nói với Dart rằng hãy tự xác định kiểu dữ liệu của biến. Kiểu dữ liệu của biến sẽ được xác định tại lần đầu tiên nó được gán giá trị. Nếu bạn khai báo một biến nhưng chưa từng gán giá trị cho nó thì kiểu dữ liệu của nó là Null.
Variable_var_ex2.dart

void main() {
  var myVariable1 = "My Text"; // Data type: String
  print("data type of myVariable1: " + myVariable1.runtimeType.toString());

  var myVariable2 = 1000; // Data type: int
  print("data type of myVariable2: " + myVariable2.runtimeType.toString());

  var myVariable3; // Data type: Null
  print("data type of myVariable3: " + myVariable3.runtimeType.toString());

  myVariable3 = true; // Data type: bool
  print("data type of myVariable3: " + myVariable3.runtimeType.toString());
}
Output:

data type of myVariable1: String
data type of myVariable2: int
data type of myVariable3: Null
data type of myVariable3: bool
  • TODO Link?
Một biến được khai báo với từ khoá var và kiểu dữ liệu được xác định là khác Null, bạn không thể gán cho nó một giá trị với kiểu dữ liệu khác.
Ví dụ: Một biến đã được Dart xác định rằng kiểu dữ liệu của nó là String. Nếu bạn gán một giá trị số cho nó thì file mã nguồn sẽ không thể được biên dịch (compile).

void main() {
  var myVariable1 = "My Text"; // Data type: String
  print("data type of myVariable1: " + myVariable1.runtimeType.toString());
 
  // Can not assign to it an integer value.
  myVariable1 = 1000; // Error at compile time.
}
Thông báo lỗi của trình biên dịch:

Error compiling to JavaScript:
Warning: Interpreting this as package URI, 'package:dartpad_sample/main.dart'.
lib/main.dart:6:17:
Error: A value of type 'int' can't be assigned to a variable of type 'String'.
  myVariable1 = 1000; // Error at compile time.
                ^
Error: Compilation failed.

3- Khai báo biến với từ khoá dynamic

Từ khoá dynamic cũng được sử dụng để khai báo một biến, nó khá giống với từ khoá var, điều khác biệt là kiểu dữ liệu của biến này có thể thay đổi.

dynamic v1 = 123;   // v1 is of type int.
v1 = 456;           // changing value of v1 from 123 to 456.
v1 = 'abc';         // changing type of v1 from int to String.

var v2 = 123;       // v2 is of type int.
v2 = 456;           // changing value of v2 from 123 to 456.
v2 = 'abc';         // ERROR: can't change type of v2 from int to String.

4- Khai báo biến với kiểu dữ liệu cụ thể

Bạn có thể khai báo một biến và chỉ định kiểu dữ liệu cụ thể cho nó:

String myVariable1 = "My Text";

int myVariable2 = 1000;
Việc chỉ định một kiểu dữ liệu cụ thể cho biến tại thời điểm khai báo biến sẽ giúp giảm các sai sót trong quá trình viết code.
Ví dụ: Bạn khai báo một biến kiểu String nhưng lại gán cho nó một giá trị số, trình biên dịch (compiler) sẽ thông báo lỗi cho bạn.

String myVariable1  = 1000; // Error at compile time.
  • TODO Link?

5- Khai báo biến với từ khoá final

Từ khoá final cũng được sử dụng để khai báo một biến, và bạn chỉ có thể gán giá trị cho biến này nhiều nhất 1 lần. Kiểu giá trị của biến này sẽ được Dart xác định tại lần gán giá trị đầu tiên.

void main() {
  final myVariable1; // Declare a variable.

  myVariable1 = 2; // Assign a value to it.

  myVariable1 = 3; // ERROR at compile time.

  final myVariable2 = "Some Text"; // Declare and assign value to variable.

  myVariable2 = "New Text"; // ERROR at compile time.
}
Sử dụng từ khoá final giúp bạn ngăn chặn việc vô tình gán một giá trị mới cho một biến. Điều này đảm bảo rằng biến này chỉ trỏ tới 1 địa chỉ duy nhất trên bộ nhớ trong suốt thời gian tồn tại của nó.
Khi khai báo một biến với từ khoá final. Dữ liệu tại vùng bộ nhớ mà biến trỏ tới vẫn có thể thay đổi một cách nội bộ.
Ví dụ: Giá trị của một biến là một mảng, các phần tử của mảng vẫn có thể thay đổi.
Variable_final_ex2.dart

void main() {
  final myArray = ["A", "B", "C"];
  print(myArray);
 
  myArray[2] = "E";
  print(myArray);
}
Output:

[A, B, C]
[A, B, E]
  • TODO Link?

6- Khai báo biến với từ khoá const

Từ khoá const được sử dụng để khai báo một biến đặc biệt, còn được gọi là hằng số. Khi khai báo biến với từ khoá const bạn nên gán giá trị cho nó, nếu không giá trị của nó được coi là null. Sau khi khai báo bạn không thể gán giá trị cho biến này. Vùng dữ liệu mà biến trỏ tới sẽ trở thành bất biến (immutable), nghĩa là nó không thể thay đổi dữ liệu một cách nội bộ.
Variable_const_ex1.dart

void main() {
  const myVariable1 = 100; // Declare and assign value to variable.

  myVariable1 = 2; // ERROR: Can not assign new value.

  const myVariable2; // Declare a variable (Its value is considered null).

  myVariable2 = "Some Text"; // ERROR: Can not assign new value.
}
Khi khai báo một biến với từ khoá const. Vùng bộ nhớ mà biến trỏ tới sẽ trở thành bất biến (immutable).
Ví dụ: Giá trị của một biến là một mảng, mảng này sẽ trở thành bất biến (immutable).
Variable_const_ex2.dart

void main() {
  const myArray = ["A", "B", "C"];
  print(myArray);

  myArray[2] = "E"; // ERROR: myArray is immutable.
  print(myArray);
}
Output:

[A, B, C]
: Unsupported operation: indexed setError: Unsupported operation: indexed set
  • TODO Link?

Xem thêm các chuyên mục:

Có thể bạn quan tâm

Đây là các khóa học trực tuyến bên ngoài website o7planning mà chúng tôi giới thiệu, nó có thể bao gồm các khóa học miễn phí hoặc giảm giá.