Trong Swift, đôi khi, từ khóa là từ khóa đơn giản và một số từ khóa khác bắt đầu bằng số @
.Từ khóa có và không có @ trong Swift
Ví dụ: weak
, unowned
, inout
, class
là đơn giản. Nhưng @final
, @lazy
bắt đầu bằng @
.
Đôi khi, chúng tôi thậm chí có cả hai! Ví dụ: prefix
và @prefix
, infix
và @infix
.
Nó không hoàn toàn là kế thừa Objective-C vì chúng tôi có @class
và không phải là class
trong Mục tiêu-C. Tôi có thể hiểu lý do tại sao chúng tôi có class
và không phải @class
trong Swift, nhưng vì chúng tôi có @final
hoặc @lazy
, tôi đã nghĩ rằng nó phải là @weak
và không phải là weak
.
Tại sao lựa chọn này? Có một loại cách trực quan nào nên nói: "hey, logic là từ khóa này bắt đầu bằng @
?
Thậm chí nếu tôi nghĩ với quan điểm tiền xử lý, không rõ ràng là @
sẽ gọi một loại tiền xử lý cụ thể trước khi biên dịch (ví dụ @final
là không thực sự là một loại chỉ thị tiền xử lý).
Bạn không đơn độc. Bản thân Apple không/không biết sự khác biệt giữa chúng. Gần đây họ đã thay đổi '@ final' thành' final', '@ lazy' thành' lazy', v.v. – Ethan
Ok, cảm ơn, tôi thấy rằng trong bản phát hành XCode 6 beta 4 ghi chú: "The' @ final', '@lazy Các thuộc tính ',' @ optional' và '@ required' đã được chuyển đổi thành các biến tố khai báo, được chỉ định mà không có ký hiệu @." Nếu bạn viết câu trả lời của bạn như bình thường, tôi sẽ upvote nó :) –
Và trong bản phát hành beta 5: "Thuộc tính' @ prefix', '@ infix' và' @ postfix' đã được thay đổi thành bộ chỉnh sửa khai báo, vì vậy chúng không còn được viết bằng dấu @ nữa – Ethan