Метод toString в Dart
У обычного класса строковое представление объекта
задают переопределением toString. Пока метод
не написан, print показывает только имя типа:
class Post {
final String title;
final int likes;
const Post(this.title, this.likes);
}
Создадим объект и выведем его:
var post = Post("Ann", 25);
print(post);
После @override и своего toString
в консоли видны имя типа и значения полей:
class Post {
final String title;
final int likes;
const Post(this.title, this.likes);
@override
String toString() => "Post($title, $likes)";
}
Создадим объект и выведем его:
var post = Post("Ann", 25);
print(post);
Тот же текст получится при явном вызове
toString - это удобно при отладке
и при логировании промежуточных значений:
class PairLabel {
final String left;
final String right;
PairLabel(this.left, this.right);
@override
String toString() => "PairLabel($left, $right)";
}
Создадим объект и вызовем метод:
var row = PairLabel("a", "b");
print(row.toString());
Формат строки задаете сами: перечисляете поля в нужном порядке. Для отладки часто хватает краткой записи в скобках:
class Order {
final int id;
final double total;
Order(this.id, this.total);
@override
String toString() => "Order($id, $total)";
}
Создадим объект и выведем его:
var order = Order(7, 19.5);
print("debug: $order");
Сделайте класс Color с полями
red, green, blue.
Создайте объект Color(255, 128, 0)
и выведите его на экран одной командой
print.
Дан следующий код:
class Version {
final int major;
final int minor;
Version(this.major, this.minor);
@override
String toString() => "Version($major, $minor)";
}
Создадим объект:
var v = Version(2, 1);
Выведите на экран результат вызова
v.toString().