Dart リスト(配列)をシャッフルする

Dart リスト(配列)をシャッフルする

Dartで、リスト(配列)をシャッフルするコードを記述してます。名前通りの「shuffle」を使用します。空文字や値が1つの場合は結果はそのままになります。また、「const」を指定したリストに対して実行するとエラーが発生します。

環境

  • OS windows11 home
  • Dart 2.18.1

シャッフルする

シャッフルするには「shuffle」を使用します。

リスト.shuffle()

実際に使用して、シャッフルしてみます。

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

  list.shuffle();

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

  list.shuffle();

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

実行結果を見ると、シャッフルされていることが確認できます。

空のリストに使用すると、空の配列が返ります。

void main() {
  var list = [];

  list.shuffle();

  print(list); // []
}

値が1つしかない場合は、そのままになります。

void main() {
  var list = ['a'];

  list.shuffle();

  print(list); // [a]
}

定数

「const」で宣言したリストに使用するとエラー「Unsupported operation: Cannot modify an unmodifiable list」が発生します。

void main() {
  const list = ['a'];

  list.shuffle();

  print(list); // [a]
}

Unhandled exception:
Unsupported operation: Cannot modify an unmodifiable list
#0      UnmodifiableListMixin.shuffle (dart:_internal/list.dart:154:5)
#1      main (file:///c:/sample/main.dart:4:8)
#2      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)    
#3      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

「final」の場合は、メモリ領域は変更できるためエラーにはなりません。

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

  list.shuffle();

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

  list.shuffle();

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