Trong Swift, không cần thiết phải prefix classes nữa vì mô-đun của chúng hoạt động như không gian tên.Chức năng mở rộng tiền tố
Điều gì về chức năng mở rộng tiền tố? Ví dụ:
extension UIImage {
public func hnk_hasAlpha() -> Bool { ... }
}
Một mặt Swift không động nên va chạm sẽ tạo ra lỗi trình biên dịch.
Nhưng điều gì sẽ xảy ra nếu mã được biên dịch chạy trong phiên bản iOS/OS X trong tương lai mà một trong các phương pháp mở rộng của tôi được thêm vào? Các phương thức trong các mô-đun khác nhau có được coi là các biểu tượng khác nhau ngay cả khi chúng có cùng chữ ký không?
Có tạo sự khác biệt nếu lớp mở rộng là lớp con NSObject hoặc lớp Swift thuần túy không?
Tại sao bạn cho rằng nên thêm chức năng vào lớp được Apple cung cấp? Tại sao không chỉ viết một hàm. Điều đó sẽ rõ ràng đối với các nhà phát triển tương lai làm việc với mã. Hoặc phân lớp. – zaph
Cho dù đó là ý hay hay không liên quan đến khía cạnh kỹ thuật của câu hỏi, thì Swift xử lý loại va chạm này như thế nào. Điều đó nói rằng, tôi nghĩ rằng việc mở rộng các lớp của Apple rất hữu ích để cung cấp cho các chức năng ngữ cảnh tốt hơn trong khi giới hạn phạm vi của biểu tượng, và thực hiện các giao thức tùy chỉnh mà không cần đến các đối tượng bao bọc, trong số những thứ khác. – hpique