any và all
Thuộc phần Logic và luồng chương trình trong hành trình GDScript của Coddy. Bài học 63 trên 78.
any() và all() đặt câu hỏi có hoặc không về toàn bộ một mảng. Cả hai đều nhận một hàm trả về true hoặc false cho một phần tử:
any()trả vềtruenếu hàm trả vềtruecho ít nhất một phần tử.all()trả vềtruenếu hàm trả vềtruecho mọi phần tử.
var enemy_hp = [30, 0, 12]
print(enemy_hp.any(func(hp): return hp == 0))
print(enemy_hp.all(func(hp): return hp > 0))true
falseMột kẻ địch có 0 HP, nên any() là true, và chính kẻ địch đó khiến all() là false.
Cả hai đều dừng ngay khi biết được kết quả: any() dừng ở giá trị true đầu tiên, all() dừng ở giá trị false đầu tiên. Chúng cũng hoạt động với các hàm có tên, chẳng hạn như numbers.all(is_even).
Với một mảng rỗng, any() trả về false vì không có phần tử nào vượt qua điều kiện, còn all() trả về true vì không có phần tử nào không vượt qua điều kiện.
Dùng chúng trong điều kiện thay cho vòng lặp có biến cờ:
var inventory = ["sword", "key", "rope"]
if inventory.any(func(item): return item == "key"):
print("The door opens")Thử thách
DễChương trình đọc một dòng điểm được phân tách bằng dấu phẩy và lưu vào mảng numbers. Phần này đã được viết sẵn.
In ra hai dòng:
Any perfect:theo sau làtruenếu có ít nhất một điểm là100, nếu không thì làfalseAll passed:theo sau làtruenếu mọi điểm đều từ50trở lên, nếu không thì làfalse
Dùng any() cho dòng đầu tiên và all() cho dòng thứ hai. Với đầu vào 100,75,40, đầu ra là:
Any perfect: true
All passed: falseTự làm thử
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# In ra hai dòng bằng any() và all()
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 chương trình
1Chuyên sâu về chuỗi
Các phương thức của chuỗiTìm kiếm trong chuỗiThay thế và xóa khoảng trắngTách và nốiÔn tập: Kiểm tra tên người dùng7Kiểu liệt kê
Kiểu liệt kê là gì?Định nghĩa kiểu liệt kêCác giá trị của kiểu liệt kêKiểu liệt kê trong matchÔn tập: đèn giao thông10Hàm nâng cao
Trả về nhiều giá trịHàm lambda phần 1Hàm lambda phần 2Ôn tập: sắp xếp bằng lambdaHàm đệ quy phần 1Hàm đệ quy phần 2Ôn tập: tính tổng mảng lồng nhau13Hệ thống quản lý hàng tồn kho
Tổng quan dự ánThêm mặt hàng2Ra quyết định nâng cao
So khớp với biếnĐiều kiện bảo vệ trong so khớpMẫu mảngMẫu từ điểnKiểm tra thành viênÔn tập: Bộ phân tích lệnh5Ứng dụng sổ liên lạc
Hiển thị menuThêm liên hệ8Trình quản lý hồ sơ học sinh
Tổng quan dự ánThêm học sinh3Mảng nhiều chiều
Cơ bản về mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuVòng lặp lồng nhau với mảng 2 chiềuÔn tập: mảng 2 chiềuMảng răng cưaCác mẫu phổ biến với mảng 2 chiềuÔn tập: bàn cờ6Tập hợp với từ điển
Tập hợp là gì?Từ điển như một tập hợpThêm và xóaHợp và giaoHiệu tập hợpÔn tập: Xóa phần tử trùng lặp9Tổng hợp dữ liệu nâng cao
Tính tổng các giá trịTìm giá trị nhỏ nhất và lớn nhấtSắp xếp tùy chỉnhÔn tập: Sắp xếp từ điểnTự luyện tập: Trình biên dịch GDScript online