Место пометки в Dart
У одного объявления в Dart иногда несколько слотов: параметр конструктора, поле, метод, геттер. Метку ставят непосредственно перед тем элементом, к которому относится смысл. Если цель выбрать неверно, подпись будет относиться не к тому фрагменту кода.
На параметр конструктора метку пишут перед именем параметра. На поле - перед объявлением поля, даже если значение приходит из конструктора. Для учебной подписи к профилю оба варианта можно показать рядом:
class Doc {
final String note;
const Doc(this.note);
}
class Profile {
final String handle;
Profile(@Doc('constructor argument') this.handle);
}
Параметр handle существует только в момент
создания объекта - к нему относится пометка в
конструкторе. Снаружи видно уже поле handle.
Чтобы подпись относилась именно к полю, метку
ставят перед полем, а параметр оставляют без
отдельной метки:
class Doc {
final String note;
const Doc(this.note);
}
class Profile {
@Doc('public property')
final String handle;
Profile(this.handle);
}
Тот же прием подходит, когда одна строка описания нужна только полю, а параметр остается без отдельной подписи:
class Doc {
final String note;
const Doc(this.note);
}
class Session {
@Doc('stored session id')
final String id;
Session(this.id);
}
void runSample() {
Session s = Session('s-1');
print(s.id);
}
Объявите метку с параметром note типа
String. Создайте класс заказа с параметром
code в конструкторе: на параметр и на
поле повесьте Doc с разными строками.
Добавьте класс Employee с одним строковым
полем из конструктора. Подпись Doc должна
стоять только на поле, без метки на параметре
конструктора.