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,
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