You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.06 16:15:42