Dart Mapのキーを指定して値を更新する

Dart Mapのキーを指定して値を更新する

Dartで、Mapのキーを指定して値を更新するコードを記述してます。「update」メソッドを使用してキーと値を指定することで可能です。存在しないキーを指定するとエラーが発生します。

環境

  • OS windows11 home
  • Dart 2.18.4

Mapのキーを指定して値を更新

Mapのキーを指定して値を更新するには
1. 「update」でキー名と値を指定
することで可能です。

Map.update(キー名, (value) => 値);

実際に、使用して追加してみます。

void main() {
  var map = <int, String>{
    1: 'one',
    2: 'two',
    3: 'three',
  };

  map.update(1, (v) => 'foo');
  map.update(2, (v) => 'hoge');

  print(map); // {1: foo, 2: hoge, 3: three}
}

実行結果を見ると、指定したキーの値が更新されていることが確認できます。

存在しないキーを指定

存在しないキーを指定すると、エラーが発生します。

void main() {
  var map = <int, String>{
    1: 'one',
    2: 'two',
    3: 'three',
  };

  map.update(5, (v) => 'foo');

  print(map);
  // Unhandled exception:
  // Invalid argument (key): Key not in map.: 5
  // #0      MapMixin.update (dart:collection/maps.dart:154:5)
  // #1      main (file:///c:/sample/main.dart:8:7)
  // #2      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
  // #3      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
}

「ifAbsent」を使用するとキーが存在しない場合に、値を指定して更新ではなく追加することが可能です。

void main() {
  var map = <int, String>{
    1: 'one',
    2: 'two',
    3: 'three',
  };

  map.update(5, (v) => 'foo', ifAbsent: () => null);

  print(map); //{1: one, 2: two, 3: three, 5: null}
}