Final-поля и const в Dart
Поля класса-значения объявляют в теле класса
с модификатором final и задают через
конструктор. После создания объекта к полям
обращаются по точке:
class Point {
final int x;
final int y;
Point(this.x, this.y);
}
Создадим объект и выведем его:
var p = Point(10, 20);
print(p.x);
print(p.y);
Слово final запрещает присваивать полю
новое значение после создания объекта. Чтобы
обновить данные, позже используют метод
copyWith и новый экземпляр:
class Tag {
final String code;
final int hits;
Tag(this.code, this.hits);
}
Создадим объект и выведем его:
var tag = Tag("api", 0);
print(tag.hits);
Если все поля final и конструктор
не выполняет произвольный код, его помечают
const. Тогда объект можно создавать
как compile-time константу. Имена аргументов
при вызове совпадают с именами полей:
class Book {
final String title;
final int pages;
const Book({required this.title, required this.pages});
}
Создадим объект и выведем его:
var book = Book(title: "Notes", pages: 120);
print(book.title);
Сделайте класс City с полями
name и population.
Создайте объект для города "Oslo"
с населением 700000 и выведите оба
поля в двух строках.
Сделайте класс Score с полями
player и points.
Дан объект:
var row = Score("Kim", 12);
Выведите на экран имя игрока и количество
очков из объекта row.