Dart 的 Map 对象虽然已经比较好用,但总有不满足的地方。
比如说,我想在 map 中取 key 为 'a' 的 int 类型数据,成功取到就用取到的值,取失败就用默认值,甚至如果是一个字符串类型的数值,我也希望能转成 int 给我。
要实现这些操作,如果不做点什么,就要写不少的判断什么的代码。如果一两个地方需要也就罢了,要是很多地方需要,那就有很多重复的代码了。
好在 dart 为我们提供了 extension 关键字,可以很方便的对现有类型进行功能扩展。废话不多说了,直接上代码,抛砖引玉,不喜勿喷!
import 'dart:convert';
import 'utils.dart';
/// Map 扩展
extension MapExtension on Map {
/// 取对象
_Set
在将上面的代码保存后在任意文件中引入后,就可以这样使用了:
Map v = {'a': '123', 'b': '456', 'c': 666, 'items': ['a', 'b', 'c', 1, 2, 3] };
print(v.s['a']);
print(v.i['b']);
print(v.s['c']);
print(v.getList('items', (e) => e.toString()));