DEV Community

Son Tran
Son Tran

Posted on

Tự học Dart - 002

Biến (Variables)

Khai báo biến bằng từ khóa var Dart sẽ ngầm hiểu kiểu dữ liệu của nó. Khi khai báo trong phạm vi local thì nên dùng var thay vì dùng kiểu khai báo tường minh như String double int....

String title = 'Đây là 1 ví dụ về biến';
main() {
  var name = "Son Tran";
  String s = "abcxyz";
  double d = 1.1;
  int num = 2;

  print(title);
  print("Variables are: $s $d $num $name");
}
Enter fullscreen mode Exit fullscreen mode

Khi đã khai báo biến rồi, thì biến đó thuộc kiểu dữ liệu cố định. Nếu gán giá trị kiểu khác sẽ bị lỗi.

var i = 1;
i = 'somethings';
/*
Sẽ lỗi do biến `i` thuộc kiểu `int` mà giờ lại gán qua kiểu String
*/
Enter fullscreen mode Exit fullscreen mode

Nếu muốn gán kiểu khác, hãy dùng dynamic hoặc khai báo kiểu Object

main() {
 // Dùng dynamic
 dynamic s = 1; 
 s = 'a cat';
 /*
  Dùng `Object` vì như đã nói mọi kiểu dữ liệu đều là một instance 
  của class Object trong Dart
 */
 Object x = 99;
 x = 'a dog';

 print("Variables is: $s $x");
}
Enter fullscreen mode Exit fullscreen mode

Ngoài ra còn có từ khóa khai báo kiểu hằng số là constfinal. Chúng khác nhau ở chỗ là const khai báo hằng số ở complie-time còn final là run-time.
Và hằng số thì không thể gán giá trị sau khi khởi tạo.

main() {
 const PI = 3.14;
 final TODAY = DateTime.now();

 print("Variable is: $PI $TODAY");

 PI = 3.1416; //Lỗi
}
Enter fullscreen mode Exit fullscreen mode

Ngoài ra với Dart 2.5 còn có thể dùng is as và Spread Operator (...)

main() {
 const Object i = 3;

 const list = [i as int]; // Sử dụng typecast.

 const map = {if (i is String) i: "String" else "aaa": "Other"};
 // Dùng `is` và lệnh `if else`.

 const set = {if (list is List<int>) ...list};
 // Dùng Spread Operator `...`

 print("Variable is: $list $map $set");
}
Enter fullscreen mode Exit fullscreen mode

Kiểu dữ liệu trong Dart

Cơ bản có các kiểu sau:

  • Kiểu numbers gồm: num, intdouble
  • Kiểu string
  • Kiểu booleans
  • lists (hay array - mãng)
  • sets
  • maps
  • runes (chuỗi Unicode)
  • symbols

Kiểu numbers

Cũng dễ như bình thường thôi :D

main() {
  //`num` có thể là kiểu số nguyên hoặc thập phân
  num i = 100;
  num d = 7.55;

  /*
   `int` là kiểu số nguyên, và `double` là kiểu số thập phân.
   Hai kiểu này là sub-class của `num`
  */
  int n = 999999;
  double x = 68.25;
  double y = 1; // ngầm hiểu `double y = 1.0`
  //Ép kiểu
  var one = int.parse('1');

  //Một số cách biểu diễn số khác
  var hex = 0xFF;
  var exp = 1.42e5;

  print("Variable is: $i $n $d $x $hex $exp");
}
Enter fullscreen mode Exit fullscreen mode

Top comments (1)

Collapse
 
mrtung profile image
Mr Tùng

ko ngờ có người writing tiếng việt, nice bro