openplanning

Toán tử chấm chấm (..) trong Dart

  1. Toán tử dot dot ( .. )

1. Toán tử dot dot ( .. )

Trong ngôn ngữ lập trình Dart, toán tử dot dot ( .. ) cũng được hiểu là "cascade notation" (ký hiệu xếp tầng). Nó cho phép bạn không lặp lại cùng một mục tiêu nếu bạn muốn gọi một số phương thức trên cùng một đối tượng.
Ví dụ:
dotdot_ex1.dart
void main() {
  var list1 = [];
  list1..add('One')..add('Two')..add('Three');
  print(list1); // [One, Two, Three]

  // Same as:
  var list2 = [];
  list2.add('One');
  list2.add('Two');
  list2.add('Three');
  print(list2); // [One, Two, Three]
}
Ví dụ: Gọi nhiều phương thức của cùng một đối tượng, sử dụng toán tử dot dot giúp code của bạn ngắn hơn.
dotdot_ex2.dart
void main() {
  var list1 = [];
  list1..add('One')..add('Two')..addAll(['Three', 'Four', 'Five']);
  print(list1); // [One, Two, Three, Four, Five]  

  // Same as:
  var list2 = [];
  list2.add('One');
  list2.add('Two');
  list2.addAll(['Three', 'Four', 'Five']);
  print(list2); // [One, Two, Three, Four, Five]

  // Same as:
  var list3 = []..add('One')..add('Two')..addAll(['Three', 'Four', 'Five']);
  print(list3); // [One, Two, Three, Four, Five]  
}
Trong các ngôn ngữ không hỗ trợ toán tử dot dot, để gọi một dẫy các phương thức liên tiếp nhau thì các phương thức này phải trả về một đối tượng. Chẳng hạn:
without_dotdot_ex1.dart
class Calculator {
  double _accumulator = 0;

  Calculator(double startValue) {
    _accumulator = startValue;
  }
  Calculator add(double val) {
    _accumulator += val;
    return this; // Return this object.
  }
  Calculator subtract(double val) {
    _accumulator -= val;
    return this; // Return this object.
  }
  double result() {
    return _accumulator;
  }
}
void main() {
    var calc = Calculator(100);
    var result = calc.add(100).subtract(50).subtract(25).result();
    print(result); // 125
}
Toán tử dot dot giúp bạn gọi một dẫy các phương thức mà các phương thức này không cần thiết phải trả về một đối tượng. Chúng ta viết lại ví dụ trên.
with_dotdot_ex1.dart
class Calculator {
  double _accumulator = 0;

  Calculator(double startValue) {
    _accumulator = startValue;
  }
  void add(double val) {
    _accumulator += val;
  }
  void subtract(double val) {
    _accumulator -= val;
  }
  double result() {
    return _accumulator;
  }
}
void main() {
    var calc = Calculator(100);
    calc..add(100)..subtract(50)..subtract(25);
    var result = calc.result();
    print(result); // 125
}