在Swift中,有时候,关键字是普通关键字,有些则以@
开头。
例如,weak
,unowned
,inout
,class
都很简单。但是@final
,@lazy
以@
开头。
有时,我们甚至都有!例如prefix
和@prefix
,infix
和@infix
。
它不完全是Objective-C继承,因为我们在Objective-C中有@class
而不是class
。我可以理解为什么我们在Swift中有class
而不是@class
,但由于我们有@final
或@lazy
,我原以为它应该是@weak
而不是weak
。
为什么选择这个?是否有一种直观的方式可以说明:"嘿,这个关键字以@
开头是合乎逻辑的?
即使我认为考虑到预处理器的观点,@
在编译之前调用一种特定的预处理器并不明显(例如@final
实际上并不是一种预处理器指令)。
答案 0 :(得分:7)
@
- Swift中的前缀项不是关键字,这些是属性。
属性提供有关声明或类型的更多信息。 Swift中有两种属性,即适用于声明的属性和适用于类型的属性。
某些属性(例如@objc(isEnabled)
)接受参数。
属性和关键字之间的主要区别在于关键字告诉编译器您定义了什么(类,方法,属性,变量等),而属性告诉编译器您打算使用什么上下文那个定义。例如,您将使用func
关键字告诉编译器您正在定义一个函数,并使用@infix
属性修饰该函数,以告诉编译器您计划将该函数用作中缀操作