Несколько расширений в Dart
Для одного типа можно объявить несколько блоков
extension с разными именами. Каждый блок
добавляет свои команды, и объект вызывает их через
точку, если имена методов не пересекаются.
Два расширения для Post с методами
shout и mark:
class Post {
Post(this.title);
String title;
}
extension PostShout on Post {
void shout() {
print(title);
}
}
extension PostMark on Post {
void mark() {
print("done");
}
}
Создадим объект и вызовем метод:
var post = Post("note");
post.shout();
post.mark();
Если в двух расширениях для одного типа объявлен один и тот же метод, вызов без префикса становится неоднозначным - нужно указать имя расширения перед командой.
Пока имена различаются, оба расширения видны в одном
файле и методы shout и mark доступны
у одного объекта без дополнительных уточнений.
Дан следующий код:
class Employee {
Employee(this.name);
String name;
}
Добавьте расширение с методом, который выводит
name, и второе расширение с методом,
который выводит "ok". Вызовите оба
метода у одного объекта.
Дан следующий код:
class Employee {
Employee(this.salary);
int salary;
}
Сделайте два расширения: в первом метод возвращает
salary через print, во втором -
геттер tag со строкой "staff".
Проверьте оба вызова на одном объекте.
Сделайте класс Employee с полем name,
два расширения с разными именами методов и один
объект, у которого вызываются обе команды.