Bài 15: Struct trong swift - Lập trình Swift cơ bản

Đăng bởi: Admin | Lượt xem: 3032 | Chuyên mục: Swift


Đối với ngôn ngữ lập trình Swift, Struct được hiểu là một kiểu giá trị đặc biệt có thể tạo ra một biến lưu trữ nhiều giá trị khác nhau nhưng lại liên quan tới nhau.
Ví dụ như sau:
  • Mã nhân viên
  • Tên nhân viên
  • Chức vụ
Thay vì phải bỏ nhiều thời gian để tạo ra 3 biến lưu trữ các thông tin của nhân viên thì lập trình viên hoàn toàn có thể sử dụng Struct để lưu trữ 3 thông tin trong cùng 1 biến.
Swift sử dụng từ khóa struct để khai báo một Struct.
import Foundation

struct Employee {

   var empNumber:String

   var empName:String

   var position:String

   // Constructor.

   init(empNumber:String, empName:String, position:String) {

      self.empNumber = empNumber;

      self.empName = empName;

      self.position = position;

  }

}
Ví dụ sử dụng Struct:
import Foundation

func test_EmployeeStruct() 	{

    // Tạo một biến kiểu struct Employee.

    let john = Employee(empNumber:"E01",empName: "John",position: "CLERK")

    print("Emp Number: " + john.empNumber)

    print("Emp Name: " + john.empName)

    print("Emp Position: " + john.position)

}

Định nghĩa Structures

Để định nghĩa Struct khá đơn giản, nó giống như cách định nghĩ class . Để hiểu rõ hơn, mời bạn tham khảo ở ví dụ dưới đây.
struct Wallet {    

var dollars: Int   

var cents: Int

}

Đặc điểm

  • Chứa các properties, methods
  • Truy cập dữ liệu đối tượng nhanh hơn bằng việc định nghĩa Subscripts 
  • Chỉnh sửa và tạo mới lại hàm khởi tạo 
  • Cho phép kế thừa Protocol
  • Mở rộng tính năng bằng việc sử dụng Extension để mở rộng tính năng

Value Type

Mỗi instance sẽ giữ một bản sao dữ liệu duy nhất của nó. Khi được gán cho một hằng, biến hoặc một hàm nó sẽ khởi tạo một instance mới. Vì thế, nếu giá trị của 1 instance nào đó bị thay đổi sẽ không làm ảnh hưởng tới các instance khác. Bạn có thể tham khảo ví dụ dưới đây để hiểu rõ hơn.
struct Employee {

    var code: Int

    var name: String

    var address: String

}

var a = Employee(code: 5, name: "BXH", address: "Sun*")

var b = a

b.name = "MH"

print(a.name) //  In ra "BXH"

print(b.name) // In ra "MH"

// Nhận thấy instance a khi được gắn cho b, nó sẽ copy giá

// trị và tạo ra một instance mới có giá trị giống với a nhưng

// độc lập với a. Do đó khi thay đổi name của b, name của a

// không bị thay đổi theo

Thay đổi dữ liệu của struct

struct OtherEmployee {

    var code: Int

    mutating func changeCode(newCode: Int) {

        self.code = newCode

    }

} 

Lý do nên dùng Struct 

  • Tạo ra một dữ liệu chứa các kiểu dữ liệu cơ sở như Int, String, Double...
  • Hoàn toàn không cần phải sử dụng tới tham chiếu khi mà dữ liệu đơn thuần chỉ có chứa các properties giá trị 
  • Chọn struct nếu không có nhu cầu kế thừa các Struct khác.
  • Tạo ra được nhiều đối tượng với những thuộc tính khác nhau có kiểu dữ liệu cơ sở như Int, Float, String, ...
  • Khi làm việc đa luồng. Ví dụ kết nối database được thực hiện trên một luồng song với luồng Main, việc sử dụng Struct an toàn hơn do nó có thể copy giá trị từ luồng này sang luồng khác.
  • Đảm bảo không có phần nào trong code có được tham chiếu tới đối tượng của chúng ta trừ khi ta truy xuất thẳng tới chúng. Do đó, dễ quản lý, việc kiểm soát giá trị đối tượng khi bị thay đổi cũng trở nên đơn giản hơn.
Bài tiếp theo: Classes trong swift >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!