Trong Swift, thuộc tính (properties) là các giá trị được liên kết với một đối tượng, đặc biệt là với các đối tượng của lớp (class), cấu trúc (struct), hoặc đối tượng của giao thức (protocol). Dưới đây là một tổng quan về các đặc điểm quan trọng của thuộc tính trong Swift:
Mục Lục
1. Stored Properties (Thuộc Tính Lưu Trữ):
- Là các biến hoặc hằng số được liên kết với một đối tượng.
- Có thể là biến (
var
) hoặc hằng số (let
). - Được khởi tạo bằng giá trị mặc định hoặc thông qua một initializer.
class MyClass {
var variableProperty: Int = 10
let constantProperty: String
init(constantValue: String) {
constantProperty = constantValue
}
}
2. Computed Properties (Thuộc Tính Tính Toán):
- Không lưu trữ giá trị mà thay vào đó cung cấp một getter và một setter để tính toán giá trị khi được truy cập hoặc gán.
struct Rectangle {
var width: Double
var height: Double
// Thuộc tính tính toán diện tích
var area: Double {
return width * height
}
}
var myRectangle = Rectangle(width: 5.0, height: 3.0)
print(myRectangle.area) // In ra: 15.0
3. Property Observers (Quan Sát Thuộc Tính):
willSet
vàdidSet
cho phép thực hiện các hành động trước và sau khi giá trị của thuộc tính thay đổi.
class StepCounter {
var totalSteps: Int = 0 {
willSet(newTotalSteps) {
print("About to set totalSteps to \(newTotalSteps)")
}
didSet {
if totalSteps > oldValue {
print("Added \(totalSteps - oldValue) steps")
}
}
}
}
let stepCounter = StepCounter()
stepCounter.totalSteps = 10
4. Type Properties (Thuộc Tính Kiểu):
- Liên kết với kiểu chứ không phải với thể hiện của kiểu.
- Được khai báo bằng từ khóa
static
cho lớp vàclass
cho các kiểu đối tượng.
struct SomeStructure {
static var typeProperty: Int = 0
}
SomeStructure.typeProperty = 100
5. Lazy Properties (Thuộc Tính Lười Biếng):
- Được khởi tạo chỉ khi được sử dụng lần đầu tiên, thường sử dụng để trì hoãn công việc tạo đối tượng có thể tốn nhiều tài nguyên.
class DataManager {
lazy var fileLoader: FileLoader = FileLoader()
}
let dataManager = DataManager()
// Không có FileLoader được tạo cho đến khi fileLoader được sử dụng lần đầu tiên
6. Property Wrappers:
- Một cách để đóng gói và tái sử dụng mã nguồn cho logic quản lý của thuộc tính.
@UserDefaultsWrapper(key: "highScore", defaultValue: 0)
var highScore: Int
Thuộc tính là một phần quan trọng của Swift, chúng giúp định nghĩa và quản lý dữ liệu trong các đối tượng của bạn, cung cấp tính năng quan trọng cho việc lập trình hướng đối tượng và lập trình hướng thủ tục.
Xin chào,
99,99% nội dung trên website này là nhờ hỏi ChatGPT, rồi mình biên tập lại để dễ hiểu và dùng lâu dài. Một vài bài tự viết, còn lại là “làm việc nhóm với AI”
Mình lưu tại đây để tra cứu, học tập và chia sẻ với bạn bè. Nếu bạn tìm được gì hữu ích, cứ đọc thoải mái – miễn phí, không quảng cáo.
Mình cũng có vài app cá nhân:
QuestionBank – Ôn thi vào 10 (iOS, Android)
TypingTest by QuestionBank (iOS, Android)
Cảm ơn bạn đã ghé qua!