@final关键字的用法

时间:2019-03-09 20:57:08

标签: swift

当我尝试定义以@final关键字开头的变量时:

    class SomeClassX{
     @final var x: String
     var y: String
     init(y: String) {
         self.y = y
     }
    }

我收到一个错误:

  

'final'是声明修饰符,不是属性

我发现这真的很奇怪,因为Swift编程语言这本书说

  

您可以防止方法,属性或下标被覆盖   通过将其标记为最终。为此,请编写@final 属性   在其介绍者关键字之前

我应该如何使用它?

2 个答案:

答案 0 :(得分:3)

您正在使用语言指南的最新版本。从Swift 1.0开始,final是关键字,而不是属性。只需移除@

您可以在指南的修订历史中看到此更改。

答案 1 :(得分:0)

@之前不需要final。事实是,您所做的编译器是将final解释为属性,例如@available。因此:

class SomeClassX{
  final var x: String

  var y: String
  init(y: String) {
    self.y = y
  }
}