ND: Ta dùng mảng liên hợp cho từ gốc Associative Array. Nếu không có gì nhầm lẫn, ta chỉ gọi tắt là mảng.
D hỗ trợ mảng liên hợp hay còn gọi là ánh xạ băm (hash map
).
Ví dụ mảng với khóa kiểu chuỗi và giá trị kiểu số nguyên được khai báo
như sau:
int[string] arr;
Lấy ví dụ về việc gán giá trị phần tử theo khóa của mảng:
arr["key1"] = 10;
Dùng chỉ thị in
để biết một khóa có trong mảng hay không:
if ("key1" in arr)
writeln("Có");
Biểu thức in
trả về con trỏ tới giá trị của khóa, hoặc trả về null
nếu không tìm thấy khóa đã chỉ ra. Ta có thể tìm phần tử theo khóa
rồi gán giá trị mới cho nó như sau:
if (auto val = "key1" in arr)
*val = 20;
Nếu khóa chưa có trong mảng, việc truy cập phần tử theo khóa đó làm
phát sinh lỗi RangeError
và chương trình lập tức dừng lại.
Để tránh trường hợp này, có thể chỉ ra giá trị mặc định nếu khóa chưa có:
get(key, defaultValue)
Mảng liên hợp cũng có kích thước cho bởi .length
, có thể bỏ đi phần tử
bằng phép .remove(key)
. Bạn có thể tự tìm hiểu thêm về .byKey
và .byValue
là hai phép duyệt qua mảng liên hợp.