Dart代码分析器为何不识别switch default分支中局部变量的使用?
Dart 局部变量未使用警告原因说明
- 首先你混淆了分析器两类检查的判定逻辑:你收到的
The value of the local variable 'color' isn't used.警告,和变量是否被赋值没有关联,它的触发规则是局部变量声明、赋值后,整个作用域内没有任何代码读取它的值。你在switch的default分支给color赋值属于写入操作,不属于分析器判定的「值使用」范畴,自然不会被识别为有效使用。 - 保留
print(color)语句时不会触发警告的原因很简单:print语句会读取color的当前值作为入参,属于对变量值的有效读取操作,满足分析器的检查要求。 - 你可以自行验证:注释掉
print语句后,只要新增任意读取color值的代码(比如写一行var temp = color;),警告就会自动消失。
内容的提问来源于stack exchange,提问作者YEG
相关产品推荐
相关产品推荐

