Hàm lambda phần 1
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 54 trên 78.
lambda là một hàm không có tên, được viết dưới dạng giá trị. Bạn có thể lưu hàm này vào một biến như số hoặc chuỗi:
var add = func(a, b): return a + bNó bắt đầu bằng func, các tham số và dấu hai chấm, giống như mọi hàm, nhưng không có tên. Phần thân chỉ có một câu lệnh có thể nằm trên cùng một dòng.
Để chạy một lambda được lưu trong biến, hãy gọi phương thức call() của nó với các đối số:
print(add.call(5, 3))8add(5, 3) không hoạt động: GDScript tìm hàm có tên add trong tập lệnh và báo lỗi Function "add()" not found trước khi chương trình chạy.
Một lambda dài hơn có một khối lệnh được thụt lề. Giống như mọi hàm (function), nó cần return để trả về một giá trị:
var greet = func(player_name):
var message = "Hello, " + player_name
return message + "!"
print(greet.call("Ana"))Hello, Ana!Hàm lambda không có return sẽ trả về null, vì vậy func(n): n * 2 tính giá trị rồi bỏ đi.
Tham số và giá trị trả về có thể có kiểu dữ liệu: func(n: int) -> int: return n * 2. Giá trị của lambda có kiểu Callable, kiểu dữ liệu trong GDScript dành cho “thứ bạn có thể gọi”.
Thử thách
DễChương trình đọc ba số nguyên, a, b và c.
- Tạo một hàm lambda có ba tham số,
x,yvàz, trả về tích của chúng, rồi lưu hàm đó vào một biến có tên làmultiply. - Gọi hàm đó với
a,bvàc, rồi in ra kết quả.
Với đầu vào là 2, 3 và 4, đầu ra là:
24Tự làm thử
extends Node
func _ready():
var a := int(OS.read_string_from_stdin())
var b := int(OS.read_string_from_stdin())
var c := int(OS.read_string_from_stdin())
# Tạo hàm lambda (lambda function) multiply ở đây
# Gọi multiply với a, b và c, rồi in ra kết quả
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