Этот компилирует в Dart:
var data = ["abcd", 34, "ef", false];
int n = data[1];
print(n*2); // -> 68
Я думал, что элементы списка должны быть одного типа.И нет неявного преобразования из int в строку или из bool в строку в A):
print(data[1] is int); // -> true
print(data[3] is bool); // -> true
print(data[1] is String); // -> false
EDIT : как указал Маттиа, реальная ошибка в следующих строках не связаначтобы поменять местами элементы в списке инициализации, но скопировать / вставить из A) в B), оставив тот же индекс ([1])
И это не компиляция («abcd» поменялся местами с 34):
var data = [34, "abcd", "ef", false]; // -> type error
int n = data[1]; //EDIT: this is a non sense, should be data[0] (no error generated)
print(n*2);
Воспроизводимый DartPad
Почему?Какой-то принцип замещения на работе?