Тип dynamic
Тип dynamic в Dart означает, что переменная
может хранить значение любого типа. При объявлении
переменной с типом dynamic проверка типа
откладывается до момента выполнения программы.
Это дает гибкость, но снижает безопасность типов:
ошибки, связанные с неверным типом, становятся
видны только во время выполнения. Переменной
с типом dynamic можно присвоить число,
строку, список, объект и любое другое значение,
а затем заменить его значением другого типа.
Синтаксис
dynamic name = value;
Пример
Давайте объявим переменную с типом dynamic
и присвоим ей сначала число, а затем строку:
void main()
{
dynamic value = 12345;
print(value);
value = 'abcde';
print(value);
}
Результат выполнения кода:
12345
"abcde"
Пример
Давайте сохраним в переменной с типом dynamic
список, а затем получим его элемент:
void main()
{
dynamic res = ['a', 'b', 'c', 'd', 'e'];
print(res);
print(res[2]);
}
Результат выполнения кода:
[a, b, c, d, e]
"c"
Пример
Давайте попробуем выполнить операцию, несовместимую
с текущим типом значения. Так как тип dynamic
не проверяется на этапе компиляции, ошибка возникнет
во время выполнения:
void main()
{
dynamic value = 12345;
print(value + 1);
value = 'abcde';
print(value + 1);
}
Результат выполнения кода:
12346
Unhandled exception:
type 'String' is not a subtype of type 'num' of 'other'
Смотрите также
-
тип
Type,
который представляет тип объекта во время выполнения -
тип
nullable object,
который допускает значение null -
тип
Record,
который хранит несколько значений разных типов -
тип
Function,
который представляет функцию как значение