Swift 代码如下:
func test() {
let dic = ["a": ["1", "2", "3",],]
var list = dic["a"]
list!.remove(at: 0)
DDLog(list)
DDLog(dic)
dic["a"]!.remove(at: 0)
DDLog(dic)
}
//2021-03-17 17:27:19.264 FirstViewController.swift.test()[line 171]: Optional(["2", "3"])
//2021-03-17 17:27:19.264 FirstViewController.swift.test()[line 172]: ["a": ["1", "2", "3"]]
//2021-03-17 17:27:19.264 FirstViewController.swift.test()[line 175]: ["a": ["2", "3"]]
Dart 代码如下:
test() {
var _emap = Map<String, List<String>>();
// _emap["a"] ??= <String>[],
_emap["a"] ??= ["1", "2", "3"];
var list = _emap["a"];
list.remove("1");
DDLog(list, StackTrace.current);
DDLog(_emap, StackTrace.current);
}
// flutter: 2021-03-17 09:11:34.375593 SecondPage.dart, SecondPage [line 91]: [2, 3]
// flutter: 2021-03-17 09:11:34.379511 SecondPage.dart, SecondPage [line 92]: {a: [2, 3]}
| 操作 | Swift | Dart |
|---|---|---|
| 修改字典嵌套数组 | 通过变量(var list = dic["a"])操作嵌套数组时,字典中的值不变;修改嵌套数组需要通过dic["a"]... | 通过变量(var list = _emap["a"];)操作嵌套数组时会直接导致字典的源数据一同发生改变; |