Ключевое слово this
Ключевое слово this в Dart ссылается на текущий экземпляр класса.
Оно используется внутри класса для доступа к его полям и методам,
когда имя параметра или локальной переменной совпадает с именем поля.
Также this применяется для вызова одного конструктора из другого
и для возврата текущего объекта из метода.
Внутри конструктора this позволяет отличить поле класса
от параметра с тем же именем. В именованных конструкторах
this можно использовать в списке инициализации для
присваивания значений полям. Кроме того, this можно
передавать в другие функции и возвращать из методов.
Синтаксис
this.field
this.method()
this.namedConstructor()
Пример
Давайте рассмотрим класс, в котором имя параметра конструктора
совпадает с именем поля. Используем this, чтобы
присвоить значение полю:
class User
{
String name;
int age;
User(this.name, this.age);
void show()
{
print('Name: $name, Age: $age');
}
}
void main()
{
User user = User('abcde', 25);
user.show();
}
Результат выполнения кода:
"Name: abcde, Age: 25"
Пример
Давайте используем this внутри метода для возврата
текущего объекта. Это позволяет строить цепочки вызовов:
class Counter
{
int value = 0;
Counter increment()
{
this.value++;
return this;
}
void show()
{
print(this.value);
}
}
void main()
{
Counter counter = Counter();
counter.increment().increment().increment().show();
}
Результат выполнения кода:
3
Пример
Давайте вызовем один конструктор из другого с помощью
this. Это позволяет избежать дублирования кода:
class Point
{
double x;
double y;
Point(this.x, this.y);
Point.origin() : this(0, 0);
void show()
{
print('($x, $y)');
}
}
void main()
{
Point point = Point.origin();
point.show();
}
Результат выполнения кода:
"(0.0, 0.0)"