我想知道为什么下面的代码将test
的每个字母都打印在 DartPad 上,并在终端上引发异常。我的意思是,Dart中的String不可迭代,因此我不理解这在DartPad上是如何工作的。我也希望那里有一个异常(exception)。有什么想法吗?
void main() {
var test = 'test';
for (var t in test) {
print(t);
}
}
我使用Dart 1.14.0对此进行了测试,但是在以前的版本中也是如此。
最佳答案
我猜这是因为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
Type check failed: test (String) is not of type Iterable
对彼此而言
var test = 'test';
// or
String test = 'test';
关于string - DartPad允许字符串迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35166845/