Trong Swift, extension là một cách để thêm các thành phần mới cho một kiểu dữ liệu, class, struct, optional đã tồn tại mà không cần sửa đổi mã nguồn nguyên thủy của kiểu đó. Cú pháp của extension như sau:
extension ExistingType {
// Thêm các phương thức và thuộc tính mới ở đây
}
Dưới đây là một số cách bạn có thể sử dụng extension trong Swift:
Mục Lục
1. Thêm Phương Thức cho Kiểu Dữ Liệu Đã Tồn Tại:
extension Int {
func square() -> Int {
return self * self
}
}
let number = 5
let squaredNumber = number.square() // squaredNumber là 25
2. Thêm Thuộc Tính Tính Cho Kiểu Dữ Liệu Đã Tồn Tại:
extension Double {
var squared: Double {
return self * self
}
}
let floatingPointNumber = 3.0
let squaredResult = floatingPointNumber.squared // squaredResult là 9.0
3. Thực Hiện Protocol:
Bạn có thể thêm conformance vào một protocol cho một kiểu dữ liệu đã tồn tại bằng extension:
protocol Greetable {
func greet() -> String
}
extension String: Greetable {
func greet() -> String {
return "Hello, \(self)!"
}
}
let name = "John"
let greeting = name.greet() // greeting là "Hello, John!"
4. Initializers Mở Rộng:
Bạn có thể thêm các initializer mới cho một kiểu dữ liệu:
struct Point {
var x: Double
var y: Double
}
extension Point {
init(x: Int, y: Int) {
self.x = Double(x)
self.y = Double(y)
}
}
let integerPoint = Point(x: 3, y: 5)
5. Subscripts:
Thêm subscripts mới cho kiểu dữ liệu:
extension Array {
subscript(safe index: Int) -> Element? {
return indices ~= index ? self[index] : nil
}
}
let array = [1, 2, 3, 4]
let element = array[safe: 2] // element là Optional(3)
Lưu Ý Quan Trọng:
- Extension không thể thêm lưu trữ (stored) thuộc tính mới hoặc thay đổi giá trị của thuộc tính tồn tại.
- Bạn có thể sử dụng extension để tách mã nguồn thành các phần nhỏ hơn và dễ quản lý hơn.
- Extension thường được sử dụng để làm cho mã nguồn ngắn gọn, dễ đọc và dễ bảo trì hơn.
Tuy nhiên, hãy sử dụng extension một cách cẩn thận và tránh lạm dụng chúng để giữ cho mã nguồn của bạn dễ đọc và bảo trì.
Xin chào các bạn!
Bài viết này dùng AI ChatGPT viết sau đó được tôi chọn lựa, 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í mang tính cá nhân về các vấn đề của tôi và giải pháp. Tôi lưu tại website này để tra cứu và chia sẻ cho cộng đồng. Tôi tin rằng nội dung này giải quyết vấn đề của tôi thì cũng giải quyết vấn đề của các bạn.
Tôi là Minh, sống tại Hà Nội. Tôi là kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Hiện nay, công việc chính của tôi là phát triển các app trên iOS và Android. Các ngôn ngữ và framework 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