點燈坊

失くすものさえない今が強くなるチャンスよ

Dart 之 Map Type

Sam Xiao's Avatar 2024-08-22

Dart 提供 3 種 Collection,Map 為其中之一,相當於 JavaScript 的 Object。

Version

Dart 3.5

Mutable Map

void main() {
  var map1 = {'Sam': 20};
  var map2 = <String, int>{'Sam': 20};
  Map<String, int> map3 = {'Sam': 20};

  map1['Tom'] = 30; // add
  map1['Sam'] = 10; // edit
  map1.remove('Tom'); // delete
  map1.clear(); // delete all

  print('map1: $map1');
}
  • 可使用 var 的 Type Inference 宣告的 Map 為 Mutable Map
  • var 亦可在等號右側加上 <String, int> 限定 Mutable Map 內 element 的 type
  • 亦可使用 Map<String, int> 直接宣告 Mutable Map 與 element 的 type
  • Mutable Map 可自由地 新增修改刪除清空 Map 內的 element
  • Dart 不可使用如 JavaScript 的 .length = 0 清空 Map

Immutable Map

void main() {
  var map1 = const {'Sam': 20};
  const map2 = <String, int>{'Sam': 20};
  const map3 = <String, int>{'Sam': 20};
  const Map<String, int> map4 = {'Sam': 20};

  map1['Tom'] = 30; // X add
  map1['Sam'] = 10; // X edit
  map1.remove('Tom'); // X delete
  map1.clear(); // X delete all

  print('map1: $map1');
}
  • 可加上 const 宣告為 Immutable Map
  • Immutable Map 無法對 Map 內的 element 新增修改刪除清空

Conclusion

  • Dart 3 還可使用 var map1 = new Map() 方式建立 Map,但 Android Studio 已經會提出警告
  • Dart 不可使用如 JavaScript 的 .length = 0 清空 Map
  • 在使用上可將 Map 當作 JavaScript 的 Object 使用,

Reference

Dart, Map