Swift中有和没有@的关键字

Vin*_*ren 9 programming-languages keyword swift

在Swift中,有时候,关键字是普通关键字,而其他一些关键字则以@.

例如,weak,unowned,inout,class是平原.但是@final,@lazy从开始@.

有时,我们甚至都有!prefix并且@prefix,infix@infix例如.

它不完全是Objective-C继承,因为我们有@class而不是classObjective-C.我能理解为什么我们有class而不是@class在斯威夫特,但是既然我们有@final或者@lazy,我会认为应该@weak而不是weak.

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

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

das*_*ght 7

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

苹果公司关于Swift的书说

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

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

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