betacode

Оператор точка-точка (..) в Dart

  1. Оператор dot dot ( .. )

1. Оператор dot dot ( .. )

В языке программирования Dart оператор dot dot ( .. ) также интерпретируется как "cascade notation" (каскадная нотация). Это позволяет вам не повторять одну и ту же цель, если вы хотите вызвать несколько методов для одного и того же объекта.
Например:
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]
}
Например: Вызов нескольких методов одного и того же объекта с помощью оператора dot dot делает ваш код короче.
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]  
}
В языках, которые не поддерживают оператор dot dot, для вызова последовательности методов, методы должны возвращать объект. Такие как:
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
}
Оператор dot dot помогает вызывать ряд методов, которые не обязательно возвращают объект. Мы перепишем приведенный выше пример.
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
}