Оператор cascade (..)
Оператор cascade .. позволяет выполнить несколько операций над одним объектом,
не переписывая ссылку на этот объект многократно. Выражение с каскадом возвращает
исходный объект, а не результат последней операции. Синтаксически каскад состоит
из двух точек, за которыми следует вызов метода, обращение к свойству или операция
присваивания. В отличие от обычного вызова, каскад не требует указания имени
переменной перед каждым действием. Первым идёт объект, затем через ..
перечисляются операции, которые нужно над ним выполнить.
Синтаксис
object
..method1()
..method2()
..property = value;
Пример
Давайте создадим список и с помощью каскада добавим в него элементы, а затем выведем результат:
void main()
{
List<int> res = []
..add(1)
..add(2)
..add(3);
print(res);
}
Результат выполнения кода:
[1, 2, 3]
Пример
Каскад можно использовать и с методами строки, например, для получения нескольких преобразований:
void main()
{
String res = 'abcde'
..toUpperCase()
..substring(1, 4);
print(res);
}
Результат выполнения кода:
"abcde"
Обратите внимание: каскад возвращает исходный объект,
а не результат последнего метода, поэтому в переменной
res окажется исходная строка.
Пример
Каскад удобно применять для настройки объектов, например, при работе с пользовательскими классами:
class User
{
String name = '';
int age = 0;
void setName(String value)
{
name = value;
}
void setAge(int value)
{
age = value;
}
}
void main()
{
User user = User()
..setName('John')
..setAge(30);
print(user.name);
print(user.age);
}
Результат выполнения кода:
"John"
30
Смотрите также
-
оператор
cascade-null,
который выполняет каскад только для не-null объекта -
оператор
this,
который ссылается на текущий объект -
ключевое слово
new,
которое создаёт новый объект -
ключевое слово
var,
которое объявляет переменную