string - DartPad允许字符串迭代

标签 string dart iteration

我想知道为什么下面的代码将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/

相关文章:

Java - 如何在矩形中以视觉方式将特定字符串(不仅仅是字体)居中

用于字符串提取的 Java 正则表达式

flutter - 在 Flutter 中切换相机纵横比

android - 如何在flutter中将列表对象发布到cloud firestore firebase

python - 遍历包含 8526 个项目的列表,获取索引超出范围错误

php - 如何获取正则表达式匹配在字符串中的位置?

PHP DOM 解析器移动关闭 Div 标记

firebase - Flutter构建错误。(与发布缓存有关)

java - 在深层层次结构中查找元素 - 迭代与递归

python - 通过转换为迭代来加速递归方法