Swift中有和没有@的关键字

时间:2014-06-22 09:40:28

标签: programming-languages swift keyword

在Swift中,有时候,关键字是普通关键字,有些则以@开头。

例如,weakunownedinoutclass都很简单。但是@final@lazy@开头。

有时,我们甚至都有!例如prefix@prefixinfix@infix

它不完全是Objective-C继承,因为我们在Objective-C中有@class而不是class。我可以理解为什么我们在Swift中有class而不是@class,但由于我们有@final@lazy,我原以为它应该是@weak而不是weak

为什么选择这个?是否有一种直观的方式可以说明:"嘿,这个关键字以@开头是合乎逻辑的?

即使我认为考虑到预处理器的观点,@在编译之前调用一种特定的预处理器并不明显(例如@final实际上并不是一种预处理器指令)。

1 个答案:

答案 0 :(得分:7)

@ - Swift中的前缀项不是关键字,这些是属性

苹果公司关于斯威夫特的书说

  

属性提供有关声明或类型的更多信息。 Swift中有两种属性,即适用于声明的属性和适用于类型的属性。

某些属性(例如@objc(isEnabled))接受参数。

属性和关键字之间的主要区别在于关键字告诉编译器您定义了什么(类,方法,属性,变量等),而属性告诉编译器您打算使用什么上下文那个定义。例如,您将使用func关键字告诉编译器您正在定义一个函数,并使用@infix属性修饰该函数,以告诉编译器您计划将该函数用作中缀操作