Dart中Map转Set时a.toSet后判断a is Set返回false的原因
Dart代码输出false的核心原因
你这段代码的问题出在两个基础语法认知错误,全程没有真正完成List到Set的转换:
- 第一处错误:
a.toSet没有执行方法调用。Dart中调用方法必须携带括号(),你写的a.toSet只是获取了toSet方法本身的引用,既没有执行转换逻辑,也没有接收任何返回结果,这行代码没有任何实际作用。 - 第二处错误:就算你正确写成
a.toSet(),这个方法也不会修改原List对象本身。toSet()的逻辑是生成并返回一个全新的Set实例,原List的类型、内容都不会发生变化。你做类型判断的变量a从声明开始就是List类型,全程没有被重新赋值为其他类型的对象,a is Set的判断结果自然是false。
正确实现参考
不需要手动遍历Map往List里塞元素做中间转换,Map自带的values属性可以直接拿到所有值的集合,直接转Set即可:
void main() { Map info = {"name": "mark", "age": "20"}; Set targetSet = info.values.toSet(); print(targetSet is Set); // 输出true }
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

