Struct là kiểu cấu trúc rất quen thuộc trong các ngôn ngữ lập trình. Bài viết này mình cũng sẽ hướng dẫn bạn cách thức khai báo và sử dụng struct trong Swift. Từ đó bạn hãy so sánh xem struct trong Swift có điểm gì mới hay không nhé.


struct là gì?


Mặc dù mình nghĩ là bạn đã biết struct là gì qua các ngôn ngữ khác. Nhưng mình vẫn muốn nhắc lại một xíu về khái niệm này. Nếu bạn đã biết thì cũng hãy điểm lại với mình nhé.

Struct là một giải pháp giúp bạn định nghĩa một kiểu dữ liệu mới của riêng bạn. Kiểu dữ liệu mới do bạn tạo ra được cấu tạo từ bởi các biến rời rạc (cùng kiểu hoặc khác kiểu). Hiểu theo một cách khác là bạn kết hợp các biến rời rạc lại với nhau để tạo thành kiểu dữ liệu mới. Các biến mà bạn khai báo trong struct được gọi là các thuộc tính của kiểu Struct.

Cú pháp khai báo struct trong Swift

Để khai báo struct trong Swift, bạn cần tuân thủ theo cú pháp như sau:
Struct trong Swift ➤ Ví dụ: Vận dụng cú pháp trên, mình xây dựng struct nhanVien như sau.
Struct trong SwiftNhìn ví dụ trên, bạn có thể nhận thấy cách khai báo struct về cơ bản cũng gần tương tự các ngôn ngữ khác. Ngoài ra, Swift cũng cho phép bạn khai báo phương thức khởi tạo và hàm xử lý bên trong struct. Nhưng bạn hãy lưu ý là struct trong Swift không hỗ trợ bạn xây dựng phương thức huỷ.

Khai báo hàm/phương thức

Bạn có thể khai báo phương thức khởi tạo cho struct theo cú pháp sau:
Struct trong SwiftPhương thức khởi tạo là hàm được sử dụng để gán giá trị ban đầu cho toàn bộ các thuộc tính lưu trữ tại thời điểm khai báo struct (không bắt buộc cho thuộc tính optional). Tương tự, bạn cũng sẽ khai báo hàm xử lý tương tự như việc khai báo hàm thông thường, cú pháp:
Struct trong Swift

Ví dụ: Chúng ta lại tiếp tục xét ví dụ sau để nắm rõ hơn về cách xây dựng phương thức khởi tạo và hàm bên trong struct nhé.
Struct trong SwiftTrong ví dụ trên, mình sẽ tiếp tục xây dựng tiếp struct nhanVien. Bạn có thể thấy rằng cách thức viết hàm trong struct cũng không khác gì so với hàm thông thường. Do đó phần này mình nghĩ chắc bạn sẽ không gặp khó khăn gì phải không nào. Bạn hãy lưu ý là phần này mới chỉ hướng dẫn bạn khai báo thôi, còn sử dụng thì hãy tiếp tục xem phần dưới nhé.

Chỉnh sửa thuộc tính

Trong struct hoặc enum, bạn không thể chỉnh sửa thay đổi giá trị của các thuộc tính ngay bên trong thân trong quá trình thực thi chương trình. Nhưng nếu bạn cần phải thay đổi giá trị các thuộc tính trong quá trình thực thi chương trình. Thì lúc này bạn cần thêm từ khoá mutating trước tên hàm/phương thức thực hiện việc thay đổi giá trị.

Ví dụ: Có thể là lời diễn giải trên hơi khó hiểu, thôi thì hãy xét ví dụ sau. Có thể bạn sẽ dễ hiểu hơn.
Struct trong Swift

Từ ví dụ trên, bạn có thể thấy là mình xây dựng struct có tên Point. Struct này có vai trò lưu giữ toạ độ điểm, do đó bên trong struct được khai báo 02 thuộc tính xy. Trong struct này mình xây dựng hàm moveBy để thực hiện việc di chuyển toạ độ. Rõ ràng rằng khi toạ độ di chuyển thì giá trị xy sẽ phải thay đổi. Mặc định thì struct sẽ không cho phép bạn làm việc này ngay bên trong thân của nó. Nhưng nhờ việc thêm từ khoá mutating trước tên hàm, bạn đã được cấp phép để có thể thay đổi giá trị các thuộc tính của struct ngay bên trong thân của nó.

Sử dụng và truy xuất

Việc sử dụng struct trong Swift gần tương tự như việc sử dụng class trong C#. Bạn có thể xem ví dụ sau để so sánh:
Struct trong SwiftTrong ví dụ trên, mình tạo 02 biến có kiểu struct nhanVien. Với biến minhTriet, mình sử dụng phương thức tạo có tham số và truyền giá trị ngay tại thời điểm khai báo. Còn đối với biến thanhHuyen, mình sử dụng phương thức tạo không tham số, do đó sau khi khởi tạo, giá trị các thuộc tính của biến này được gán rỗng.

Ngoài ra, bạn có thể sử dụng dấu “.” để truy xuất biến thành viên hoặc hàm bên trong, ví dụ:
Struct trong Swift


Tổng kết


Trong bài viết này mình đã trình bày tới bạn cách thức khai báo và sử dụng struct trong Swift ở khía cạnh cơ bản. Lưu ý là struct trong swift không chỉ có như vậy. Nhưng những cách thức sử dụng khác của struct lại tương tự nhưng sử dụng class. Vì vậy mình sẽ để sang bài viết về class trình bày luôn, tránh bị trùng lắp nội dung. Ttrước khi sang bài class thì bạn hãy nắm thật vững nội dụng của bài viết này đã nhé.

0 0 votes
Đánh giá bài viết
0 Góp ý
Inline Feedbacks
View all comments