gpt4 book ai didi

flutter - 浏览 dart 中的嵌套字典

转载 作者:行者123 更新时间:2023-12-03 04:45:01 28 4
gpt4 key购买 nike

在 Dart 我有一个嵌套的元素列表

void main() {

var diction = <String, dynamic>{'1':'Alpha','2':'Beta','3':{'x':'Football','y':'Golf'},'4':{'a':'Samba','b':'Tango','c':'FoxTrott','d':'Waltz'}};
}
以及引导您完成字典的键列表,例如
var keyList = ['4','a']
问题是,我不能只使用
diction['4','a']
但必须使用
diction['4']['a']
我怎样才能像最后一种情况一样调用字典?

最佳答案

operator []只接受一个参数。那是语言的语法,你不能改变它。
可能的行动:

  • 没做什么。只需使用 dict[key1][key2]和它一起生活。我不清楚 dict[key1, key2] 之类的东西将是任何真正的改进。
  • 直接构造一个 LinkedHashMap 使用 List作为它的关键。您需要提供 equalshashCodeList 以来的回调相等性通常基于对象身份并且不执行深度相等性检查。 (同样,通常每个 List 实例都会有一个不同的 hashCode 。)完成后,您可以使用 dict[[key1, key2]] .请注意,使用这种方法,您可能会拥有可变数量的键。
  • 使用 package:tuple 并使用 Tuple2为 key 。然后你可以使用 dict[Tuple2(key1, key2)] .由于元组是“值”类型并实现 operator ==hashCode , 你可以使用 Tuple2无需额外工作即可直接使用。
  • 导出自己的Map - 基于类。您可能希望从 package:collection 's DelegatingMap 派生类,它将为您提供大部分实现。从那里您可以添加自己的方法,这些方法采用多个键并在内部执行嵌套查找。如果添加 call(Key1 key1, Key2 key2) method , 您的自定义实例 Map将成为类似函数的对象,然后调用者可以使用 dict(key1, key2)执行查找。请注意,您将无法在自定义 Map 中设置项目。使用相同的语法。或者不使用 call() ,您可以添加 get(Key1 key1, Key2 key2)set(Key1 key1, Key2 key2, Value value)方法。
  • 关于flutter - 浏览 dart 中的嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62493128/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com