我想知道为什么以下代码在 DartPad 上打印test
的每个字母,并在终端上抛出异常。我的意思是,Dart中的Strings不是Iterable,所以我不明白它在DartPad上是如何工作的;我也期待那里有一个例外。任何想法?
void main() {
var test = 'test';
for (var t in test) {
print(t);
}
}
我用Dart 1.14.0对此进行了测试,但这也发生在以前的版本中。
答案 0 :(得分:2)
我想这是因为Dart转换为JavaScript并且JavaScript支持迭代字符串,可能出于性能原因,没有额外的检查可以阻止它。
恕我直言是什么错误,即使test
被明确表示为String
void main() {
String test = 'test';
for (var t in test) {
print(t);
}
}
当我启用强模式时,我会收到警告。
my_project/.analysis_options
analyzer:
strong-mode: true
类型检查失败:test(String)不是Iterable类型
两者
var test = 'test';
// or
String test = 'test';