Mẫu mảng
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 8 trên 78.
Mẫu mảng được viết giống như một giá trị mảng. Mẫu này khớp với một mảng có cùng kích thước, trong đó các phần tử khớp với nhau theo từng vị trí. Mỗi phần tử của mẫu có thể là một giá trị cố định, _ hoặc một phép gán biến:
var point := [0, 7]
match point:
[0, 0]:
print("Origin")
[0, var y]:
print("On the y-axis at ", y)
[var x, var y]:
print("Point ", x, ", ", y)On the y-axis at 7Kích thước phải giống nhau: [var x, var y] không khớp với [1, 2, 3]. Đặt .. làm phần tử cuối cùng để cho phép có thêm bất kỳ số lượng phần tử nào, kể cả không có phần tử nào, và viết [] cho mảng rỗng:
var cmd := ["give", "sword", "Ana"]
match cmd:
[]:
print("Nothing typed")
["give", var item, ..]:
print("Giving ", item)Giving swordGuard cũng hoạt động với mẫu mảng: [var a, var b] when a == b: khớp với hai phần tử bằng nhau.
Mẫu mảng chỉ khớp với kiểu Array. Giá trị PackedStringArray mà split() trả về không bao giờ khớp với các mẫu này. Hãy lưu kết quả vào một biến được khai báo là Array để chuyển đổi kiểu dữ liệu:
var words: Array = "go north".split(" ")
match words:
["go", var dir]:
print("Heading ", dir)Heading northThử thách
DễChương trình đọc một điểm được viết dưới dạng x,y và lưu điểm đó vào mảng point dưới dạng hai số nguyên (đã được viết sẵn). Dùng câu lệnh match với các mẫu mảng để in ra vị trí của điểm, theo quy tắc đầu tiên phù hợp:
- Cả hai đều là
0:Origin xlà0:On the y-axis at y=theo sau làyylà0:On the x-axis at x=theo sau làxxvàybằng nhau:On the diagonal attheo sau là giá trị đó- Các trường hợp khác:
Point at (x, y)cùng với hai giá trị
Với đầu vào 0,5, đầu ra là:
On the y-axis at y=5Với đầu vào 2,7, đầu ra là:
Point at (2, 7)Tự làm thử
extends Node
func _ready():
var parts := OS.read_string_from_stdin().split(",")
var point := [int(parts[0]), int(parts[1])]
# Đối chiếu point với các mẫu mảng
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