DartPad允许字符串迭代

时间:2016-02-03 01:19:31

标签: string dart iteration

我想知道为什么以下代码在 DartPad 上打印test的每个字母,并在终端上抛出异常。我的意思是,Dart中的Strings不是Iterable,所以我不明白它在DartPad上是如何工作的;我也期待那里有一个例外。任何想法?

void main() {
  var test = 'test';
  for (var t in test) {
    print(t);
  }
}

我用Dart 1.14.0对此进行了测试,但这也发生在以前的版本中。

1 个答案:

答案 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';