Menu
Coddy logo textTech

リストの状態: isEmpty と isNotEmpty

CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 2/65。

リストの要素を操作する前に、リストに実際に項目が含まれているかどうかを確認することが不可欠です。Dartは、リストの状態を確認するための2つのシンプルなプロパティを提供しています:isEmptyisNotEmpty

isEmpty プロパティは、リストに要素がない場合に true を返し、少なくとも1つの要素が含まれている場合に false を返します。isNotEmpty プロパティは逆の仕組みで動作します。リストに要素がある場合に true を返し、空の場合に false を返します。

List<String> emptyCart = [];
List<String> shoppingCart = ['apples', 'bread', 'milk'];

print(emptyCart.isEmpty);      // true
print(emptyCart.isNotEmpty);   // false

print(shoppingCart.isEmpty);   // false
print(shoppingCart.isNotEmpty); // true

これらのプロパティは、リストの要素にアクセスしようとする際のエラーを防ぐために特に役立ちます。.first.last のようなプロパティを使用する前にリストが空かどうかを確認することで、より安全で信頼性の高いコードを書くことができます。

challenge icon

チャレンジ

簡単

タスクリストが空か、あるいは項目が含まれているかを確認することで、タスクキューシステムを管理するプログラムを作成してください。プログラムは以下の動作を行う必要があります:

  1. キュー名を表す文字列入力を読み込む
  2. タスクを表す複数の文字列入力を読み込む(空の文字列を受け取ると入力は終了します)
  3. isEmpty プロパティを使用して、タスクリストが空かどうかを確認する
  4. isNotEmpty プロパティを使用して、タスクリストにタスクが含まれているかを確認する
  5. 以下の形式でキューのステータスを出力する

例えば、キュー名が "Daily Tasks" で、タスクが "Review emails""Attend meeting""Write report" の場合、プログラムは以下のように出力する必要があります:

Queue: Daily Tasks
Has tasks: true
Is empty: false
Task count: 3
Status: Ready for processing

キュー名が "Weekend Tasks" で、タスクが提供されない(空の入力)場合、プログラムは以下のように出力する必要があります:

Queue: Weekend Tasks
Has tasks: false
Is empty: true
Task count: 0
Status: No tasks to process

プログラムでは、キューのステータスを判断するために isEmptyisNotEmpty の両方のプロパティを使用する必要があります。ステータスメッセージは、タスクが存在する場合は "Ready for processing"、キューが空の場合は "No tasks to process" としてください。

チートシート

リストに要素が含まれているかを確認するには、isEmpty プロパティと isNotEmpty プロパティを使用します:

List<String> emptyCart = [];
List<String> shoppingCart = ['apples', 'bread', 'milk'];

print(emptyCart.isEmpty);      // true
print(emptyCart.isNotEmpty);   // false

print(shoppingCart.isEmpty);   // false
print(shoppingCart.isNotEmpty); // true

これらのプロパティは、リストの要素にアクセスする際のエラーを防ぐのに役立ち、コードをより安全で信頼性の高いものにします。

自分で試してみよう

import 'dart:io';

void main() {
  // キュー名を読み込む
  String? queueName = stdin.readLineSync();
  
  // 空の文字列を受け取るまでタスクを読み込む
  List<String> tasks = [];
  String? task;
  while ((task = stdin.readLineSync()) != null && task!.isNotEmpty) {
    tasks.add(task);
  }
  
  // TODO: 以下にコードを記述してください
  // tasks.isEmpty と tasks.isNotEmpty プロパティを使用してキューの状態を確認してください
  // タスクが存在するかどうかに基づいて、適切なステータスメッセージを決定してください
  
  // 結果を出力する
  print('Queue: $queueName');
  // タスクの有無、空かどうか、タスク数、およびステータスを出力します
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン