Dart リスト(配列)の範囲を指定して値を抽出する

Dart リスト(配列)の範囲を指定して値を抽出する

Dartで、リスト(配列)の範囲を指定して値を抽出するコードを記述してます。「sublist」で開始位置と終了位置を指定してできます。また、「sublist」は範囲外の位置を指定するとエラーが発生します。

環境

  • OS windows11 home
  • Dart 2.18.1

範囲を指定して値を抽出

範囲を指定して値を抽出するには「sublist」を使用します。

リスト.sublist(開始位置,終了位置)

※ 終了位置の1つ前の位置までが削除されます

実際に使用して、範囲を指定して値を置換してみます。

void main() {
  var list = ['a', 'b', 'c', 'd', 'e'];

  var list2 = list.sublist(1,3); // インデックス番号「1~2」までの範囲を抽出

  print(list); // [a, b, c, d, e]

  print(list2); // [b, c]
}

実行結果を見ると、インデックス番号「1~2」までの値が抽出されていることが確認できます。

空のリストに「0~0」の範囲を設定すると、空の配列が抽出されます。

void main() {
  var list = [];

  var list2 = list.sublist(0,0);

  print(list); // []

  print(list2); // []
}

範囲外の位置を指定するとエラー「RangeError」が発生します。

void main() {
  var list = ['a', 'b', 'c', 'd', 'e'];

  var list2 = list.sublist(1,6); // インデックス番号「1~2」までの範囲を抽出

  print(list);

  print(list2);
}

Unhandled exception:
RangeError (end): Invalid value: Not in inclusive range 1..5: 6
#0      RangeError.checkValidRange (dart:core/errors.dart:363:9)
#1      List.sublist (dart:core-patch/growable_array.dart:84:38)
#2      main (file:///c:/sample/main.dart:4:20)
#3      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
#4      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

定数

「const」で宣言したリストに使用しても元のリストが変化するわけではないので、エラーにはなりません。

void main() {
  const list = ['a', 'b', 'c', 'd', 'e'];

  var list2 = list.sublist(1,3); // インデックス番号「1~2」までの範囲を抽出

  print(list); // [a, b, c, d, e]

  print(list2); // [b, c]
}