×

Truy cập getter của thuộc tính với từ khóa get trong Swift

Trong ngôn ngữ lập trình Swift, việc quản lý truy cập vào các thuộc tính của một lớp hoặc một struct là một phần quan trọng để đảm bảo tính toàn vẹn và bảo mật cho dữ liệu. Để làm điều này, Swift cung cấp cách định nghĩa các getters và setters thông qua các từ khóa như getset. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng từ khóa get để truy cập getter của một thuộc tính trong Swift.

Khái niệm cơ bản về getters

Getters là các phương thức được sử dụng để lấy giá trị của một thuộc tính. Trong Swift, getters được sử dụng để cung cấp một giao diện truy cập công khai đến các thuộc tính ngay cả khi bạn muốn kiểm soát hoặc tính toán trước khi xuất giá trị ra ngoài. Các getters có thể được định nghĩa tự động hoặc tự viết riêng (custom).

Định nghĩa getters tự động

Khi bạn định nghĩa một thuộc tính với từ khóa var, Swift sẽ tự động tạo ra một getter mặc định để trả về giá trị của thuộc tính đó. Ví dụ:

class Person {
    var name: String
    
    init(name: String) {
        self.name = name
    }
}

let person = Person(name: "John")
print(person.name) // Output: John

Trong đoạn mã trên, thuộc tính name tự động có một getter, cho phép chúng ta truy cập giá trị của nó thông qua person.name.

Định nghĩa getters tùy chỉnh

Đôi khi, bạn có thể cần thực hiện một số logic bổ sung trước khi trả về giá trị của một thuộc tính. Đó là khi bạn cần định nghĩa getters tùy chỉnh bằng từ khóa get. Dưới đây là một ví dụ về cách bạn có thể làm điều này:

class Rectangle {
    var width: Double
    var height: Double
    
    var area: Double {
        get {
            return width * height
        }
    }
    
    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }
}

let rectangle = Rectangle(width: 5.0, height: 10.0)
print(rectangle.area) // Output: 50.0

Trong ví dụ trên, chúng ta định nghĩa một thuộc tính area có getter tùy chỉnh. Getter này tính diện tích của hình chữ nhật bằng cách nhân chiều rộng và chiều cao.

Getters chỉ đọc

Đôi khi bạn chỉ muốn cho phép đọc một thuộc tính mà không cho phép ghi. Swift cung cấp một cách đơn giản để làm điều này bằng cách chỉ định getter mà không có setter. Ví dụ:

class Car {
    private var engineStarted: Bool = false
    
    var isEngineStarted: Bool {
        get {
            return engineStarted
        }
    }
    
    func startEngine() {
        engineStarted = true
    }
}

let car = Car()
print(car.isEngineStarted) // Output: false
car.startEngine()
print(car.isEngineStarted) // Output: true

Trong đoạn mã trên, thuộc tính isEngineStarted chỉ có getter mà không có setter. Điều này có nghĩa là giá trị của isEngineStarted chỉ có thể được đọc từ bên ngoài và không thể bị thay đổi trực tiếp.

Kết luận

Từ khóa get trong Swift cung cấp một cách mạnh mẽ và linh hoạt để quản lý cách các thuộc tính của bạn được truy cập và thao tác. Bằng cách sử dụng getters tự động hoặc tùy chỉnh, bạn có thể kiểm soát tốt hơn cách dữ liệu được lấy ra từ các lớp và structs của bạn, từ đó đảm bảo tính toàn vẹn và bảo mật cho dữ liệu của ứng dụng. Hãy thực hành sử dụng getters để làm quen và thành thạo với kỹ thuật quan trọng này trong Swift.

Comments