Khi thấy từ “dictionary”, bạn có dịch ra là “từ điển” theo đúng nghĩa đen Anh-Việt không? Bạn đừng nhầm lẫn nhé, đây không phải là bài viết hướng dẫn sử dụng “từ điển”. Dictionary ở đây có thể xem như một dạng mảng đặc biệt và cũng ưa dùng trong lập trình Swift. Vậy cụ thể dictionary trong Swift là gì thì bây giờ chúng ta cùng tìm hiểu nhé.
Dictionary là gì?
Dictionary giống mảng ở chỗ đều là một cấu trúc đặc biệt có khả năng lưu trữ nhiều phần tử dữ liệu bên trong. Nhưng khác với mảng, dictionary không quản lý các phần tử bên trong theo chỉ số vị trí. Các phần tử bên trong dictionary được quản lý thông qua một định danh duy nhất (hay còn gọi là khoá).
Dictionary là một dạng danh sách, trong đó mỗi phần tử gồm 2 thành phần: key và value. Trong dictionary, key là duy nhất, value có kiểu optional.
Bạn dùng dictionary khi cần tìm kiếm các giá trị dựa trên định danh (key) của chúng, giống như cách bạn tìm kiếm định nghĩa của các từ trong một quyển “từ điển”.
Cú pháp tạo Dictionary
Có 02 phương pháp tạo dictionary phổ biến như sau:
Phương pháp 1: tạo dictionary rỗng.
Thực hiện theo cú pháp sau để tạo một dictionary mới (không có bất kỳ phần tử nào bên trong):
➤ Ví dụ: khai báo dictionary có key là một số nguyên và value là một chuỗi.
Chỉ đơn giản như vậy thôi là bạn đã tạo được một dictionary mới rồi. Phần này cũng không có gì phức tạp nên mình sẽ không giải thích gì thêm nữa nhé.
Phương pháp 2: tạo dictionary bằng cách gán các phần tử trực tiếp.
Đây là phương pháp hay gặp trong trường hợp bạn muốn tạo một danh sách các tham số. Cú pháp như sau:
Trong cú pháp trên, chúng ta có thể thấy rằng việc gán các phần tử vào dictionary cũng tương đối dễ dàng. Đó là sử dụng phép gán “=” ngay khi khởi tạo để cung cấp sẵn các giá trị ban đầu cho dictionary.
➤ Ví dụ: tạo một dictionary có sẵn 02 phần tử như sau.
➤ Lưu ý: bạn hãy lưu ý là mỗi phần tử ngăn cách nhau bởi dấu phẩy “,” nhé.
Thao tác với dictionary
Thêm phần tử mới
Để cho dễ hình dung, mình sẽ thực hiện một ví dụ như sau để thêm phần tử mới nhé.
Bạn có nhận xét gì về ví dụ trên không? Việc thêm một phần tử mới vào dictionary chỉ đơn giản là chỉ định giá trị cho key và value thôi phải không nào.
Sửa giá trị của phần tử trong dictionary
Sử dụng phương thức updateValue trong trường hợp bạn muốn sửa hoặc thay đổi giá trị của một phần tử đã có. Cú pháp như sau:
➤ Ví dụ: sửa value có key là “HCM” đã được tạo ở trên thành “Ho Chi Minh Airport”.
Hoặc chúng ta cũng có thể thay đổi giá trị của phần tử đã có trong dictionary bằng cách truy xuất trực tiếp phần tử đó thông qua key giống thêm phần tử mới, ví dụ:
Xoá phần tử trong dictionary
Để xoá phần tử trong dictionary, chúng ta gán giá trị của phần tử đó là nil, ví dụ:
Hoặc chúng ta cũng có thể sử dụng phương thức removeValue() theo cú pháp như sau:
➤ Ví dụ: xoá phần tử có key là “HCM” khỏi airports.
Duyệt dictionary
Tương tự mảng, chúng ta sẽ sử dụng vòng lặp để duyệt tất cả các phần tử trong dictionary, mỗi phần tử trả về một bộ giá trị (tuple) có dạng (key, value) như sau:
Phương pháp này tương tự như duyệt mảng, bạn nào quên thì xem lại bài mảng nhé. Bên cạnh đó, chúng ta cũng có thể duyệt riêng keys hoặc values nếu muốn. Ví dụ:
Ngoài ra, ta cũng có thể lấy ra một mảng các key hoặc mảng các value thông qua thuộc tính keys và values như sau:
Đếm số lượng phần tử trong dictionary, ví dụ:
Kiểm tra dictionary có phần tử nào hay không
Sắp xếp dictionary
Dictionary chỉ hỗ trợ 01 phương thức sắp xếp bằng cách tự định nghĩa closure.
➤ Ví dụ 1: Sắp xếp theo key tăng dần
➤ Ví dụ 2: Sắp xếp kết hợp theo 2 tiêu chí key tăng dần và value giảm dần.
Đây là thao tác cuối cùng mà mình trình bày trong bài này. Hầu như những thao tác này cũng gần tương tự mảng, bạn chỉ cần lưu ý điểm khác biệt giữa mảng và dictionary một xíu thì mọi việc sẽ dễ dàng hơn rất nhiều.
Tổng kết
Trên đây là những thao tác mà bạn sẽ hay thực hiện khi sử dụng dictionary. Nội dung phần này code có thể hơi nhiều nhưng không có gì quá khó hiểu phải không nào, chủ yếu là vận dụng lại những kiến thức của các bài trước mà thôi. Vì vậy nếu bạn nào quên kiến thức chỗ nào thì xem lại hoặc comment bên dưới nhé.
Thanks bạn Trung, rất cám ơn bạn đã chia sẽ những kiến thức lập trình dễ hiểu. Chúc web của bạn ngày càng có thêm nhiều chia sẻ bổ ích.