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,
Bài viết này sử dụng AI ChatGPT để viết sau đó được lựa chọn, biên tập lại nội dung, chỉ một phần nhỏ các bài là tôi tự viết. Nội dung thể hiện ý chí cá nhân về các vấn đề, giải pháp. Tôi lưu tại website này để học, tra cứu và chia sẻ.
Tôi là Minh, sống tại Hà Nội, kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Các ngôn ngữ yêu thích của tôi là Swift, Objective-C, Java, Kotlin, .NET, HTML, JavaScript, CSS, Bootstrap, jQuery, AngularJS, Angular…
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh