gpt4 book ai didi

json - Map.mapValues((value)=> newValue)是否有Dart惯用法,使所有键保持不变?

转载 作者:行者123 更新时间:2023-12-03 03:41:54 36 4
gpt4 key购买 nike

我编写了以下小的实用程序函数,该函数使我的代码易于阅读:

mapValues(Map map, Function f) => map.map((k, v) => MapEntry(k, f(v)));

这是一个使用此函数转换json数据的示例,AngularDart Heros教程也这样做了:
class RouteRefs {
final Map<String, List<RouteRef>> routesByNetwork;

RouteRefs(this.routesByNetwork);

static RouteRefs fromJson(Map<String, dynamic> json) {
var rawMap = json["routesByNetwork"] as Map;
return RouteRefs(mapValues(rawMap, routeRefsFromJson)); // !! here !!
}

static Iterable routeRefsFromJson(routeList) {
return (routeList as List)
.map((rawRef) => RouteRef.fromJson(rawRef as Map))
.toList();
}
}

已经有一个标准的库或实用程序库函数可以执行此操作吗?如果不是,将其作为实用程序包中的顶级功能(或者起初,保持精简)是一种最佳实践吗?

由于我已经在此处复制了所有代码,因此我可能还会问一些相关的问题: routeRefsFromJson之类的代码在许多其他模型类上的相似方法具有很多冗余。是否有更好的做法来减少冗余而又不会过度提取代码?

最佳答案

Is there already a standard library or utility library function which does such a thing?



并非专门为此。

If no, is writing this as a top-level function in an utility package (or for a start, to keep it lean) an utility source file a best practice?



我会这么说,是的。尽管我会这样重写您的函数:
Map<K, V2> mapValues<K, V1, V2>(Map<K, V1> map, V2 Function(V1) f) =>
map.map((k, v) => MapEntry(k, f(v)));

Is there a better practice yet to have less redundancy without over-abstracting the code?



我会使用 https://pub.dartlang.org/packages/json_serializable-它为您处理重复的样板!

关于json - Map.mapValues((value)=> newValue)是否有Dart惯用法,使所有键保持不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54066505/

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