Метод toString
Метод toString возвращает строковое представление объекта.
Он определён в классе Object,
поэтому доступен любому объекту в Dart.
По умолчанию метод возвращает строку вида
"Instance of 'ClassName'".
Метод не принимает параметров.
Чтобы изменить поведение метода, его переопределяют
в собственном классе с помощью аннотации @override.
Метод toString часто используется неявно:
при передаче объекта в print,
при интерполяции строк и при конкатенации.
Синтаксис
String toString()
Пример
По умолчанию метод возвращает имя класса. Создадим объект и выведем его в консоль:
class User
{
String name;
User(this.name);
}
void main()
{
User user = User('abcde');
print(user.toString());
}
Результат выполнения кода:
"Instance of 'User'"
Пример
Переопределим метод toString,
чтобы получить понятное строковое представление объекта:
class User
{
String name;
int age;
User(this.name, this.age);
@override
String toString()
{
return 'User(name: $name, age: $age)';
}
}
void main()
{
User user = User('abcde', 25);
print(user.toString());
}
Результат выполнения кода:
"User(name: abcde, age: 25)"
Пример
Метод toString вызывается неявно
при интерполяции строки:
class User
{
String name;
User(this.name);
@override
String toString()
{
return 'User: $name';
}
}
void main()
{
User user = User('abcde');
print('Info: $user');
}
Результат выполнения кода:
"Info: User: abcde"
Пример
Для коллекций объектов удобно переопределять toString,
чтобы список выводился читабельно:
class Point
{
int x;
int y;
Point(this.x, this.y);
@override
String toString()
{
return '($x, $y)';
}
}
void main()
{
List<Point> points = [
Point(1, 2),
Point(3, 4),
Point(5, 6),
];
print(points);
}
Результат выполнения кода:
[(1, 2), (3, 4), (5, 6)]
Смотрите также
-
класс
Object,
базовый класс для всех объектов -
метод
noSuchMethod,
который вызывается при отсутствии метода -
свойство
runtimeType,
которое возвращает тип объекта -
метод
hashCode,
который возвращает хеш-код объекта