Trạng thái danh sách: isEmpty và isNotEmp
Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 2 trên 65.
Trước khi thao tác với các phần tử trong danh sách, bạn cần biết danh sách có chứa phần tử nào không. Dart cung cấp hai thuộc tính đơn giản để kiểm tra trạng thái của danh sách: isEmpty và isNotEmpty.
Thuộc tính isEmpty trả về true nếu danh sách không có phần tử nào và trả về false nếu danh sách có ít nhất một phần tử. Thuộc tính isNotEmpty hoạt động theo cách ngược lại: thuộc tính này trả về true khi danh sách có phần tử và trả về false khi danh sách trống.
List<String> emptyCart = [];
List<String> shoppingCart = ['apples', 'bread', 'milk'];
print(emptyCart.isEmpty); // true
print(emptyCart.isNotEmpty); // false
print(shoppingCart.isEmpty); // false
print(shoppingCart.isNotEmpty); // trueCác thuộc tính này đặc biệt hữu ích để tránh lỗi khi truy cập phần tử trong danh sách. Kiểm tra xem danh sách có trống không trước khi dùng các thuộc tính như .first hoặc .last giúp bạn viết code an toàn và đáng tin cậy hơn.
Thử thách
DễTạo một chương trình quản lý hệ thống hàng đợi tác vụ bằng cách kiểm tra danh sách tác vụ có trống hay chứa phần tử. Chương trình của bạn cần:
- Đọc một chuỗi (string) đầu vào đại diện cho tên hàng đợi
- Đọc nhiều chuỗi đầu vào đại diện cho các tác vụ (đầu vào sẽ kết thúc khi bạn nhận được chuỗi trống)
- Dùng thuộc tính (property)
isEmptyđể kiểm tra danh sách tác vụ có trống không - Dùng thuộc tính
isNotEmptyđể kiểm tra danh sách tác vụ có chứa tác vụ không - In trạng thái hàng đợi theo đúng định dạng bên dưới
Ví dụ, nếu tên hàng đợi là "Daily Tasks" và các tác vụ là "Review emails", "Attend meeting", "Write report", chương trình của bạn sẽ cho đầu ra:
Queue: Daily Tasks
Has tasks: true
Is empty: false
Task count: 3
Status: Ready for processingNếu tên hàng đợi là "Weekend Tasks" và không có tác vụ nào được cung cấp (đầu vào trống), chương trình của bạn sẽ cho đầu ra:
Queue: Weekend Tasks
Has tasks: false
Is empty: true
Task count: 0
Status: No tasks to processChương trình của bạn phải dùng cả hai thuộc tính isEmpty và isNotEmpty để xác định trạng thái hàng đợi. Thông báo trạng thái phải là "Ready for processing" khi có tác vụ và "No tasks to process" khi hàng đợi trống.
Tự làm thử
import 'dart:io';
void main() {
// Đọc tên hàng đợi
String? queueName = stdin.readLineSync();
// Đọc các tác vụ cho đến khi nhận được chuỗi rỗng
List<String> tasks = [];
String? task;
while ((task = stdin.readLineSync()) != null && task!.isNotEmpty) {
tasks.add(task);
}
// TODO: Viết code của bạn bên dưới
// Dùng các thuộc tính tasks.isEmpty và tasks.isNotEmpty để kiểm tra trạng thái hàng đợi
// Chọn thông báo trạng thái phù hợp dựa trên việc có tác vụ hay không
// In ra kết quả
print('Queue: $queueName');
// In ra hàng đợi có tác vụ hay không, hàng đợi có rỗng hay không, số tác vụ và trạng thái
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng điều khiển
1Thao tác nâng cao với danh sách
Thuộc tính danh sách: đầu và cuốiTrạng thái danh sách: isEmpty và isNotEmpĐảo ngược danh sáchThêm vào danh sách: insertXóa khỏi danh sách: removeWhereTìm trong danh sách: indexOfSắp xếp danh sáchXáo trộn danh sáchÔn tập: trình sắp xếp danh sách4Thao tác nâng cao với Map
Duyệt qua MapKiểm tra khóa và giá trịCác thuộc tính của Map: khóa và giá trịThêm có điều kiện: putIfAbsentXóa mục khỏi MapMap lồng nhauÔn tập: Cập nhật kho hàng2Thao tác hàm trên danh sách
Biến đổi bằng 'map'Lọc bằng 'where'Dùng '.toList()'Kiểm tra điều kiện bằng 'any'Điều kiện với 'every'Tìm phần tử bằng 'firstWhere'Ôn tập: lọc dữ liệu5Dự án: Tính tiền giỏ hàng
Thiết lập dự ánThêm mặt hàng vào giỏ8Dự án: Trình phân tích văn bản đơn giản
Tổng quan và thiết lập dự ánĐếm ký tự3Tập hợp
Tập hợp là gì?Tạo tập hợpThêm và xóa phần tử khỏi tập hợpKiểm tra phần tử trong tập hợpChuyển danh sách thành tập hợpPhép hợp của các tập hợpPhép giao của các tập hợpPhép hiệu của các tập hợpÔn tập: danh sách khách mời không trùng lặpTự luyện tập: Trình biên dịch Dart online