在Swift中,为什么具有相同名称的实例参数和类函数会产生无效的重新声明错误?

时间:2016-04-06 18:35:18

标签: swift

这是一个人为的例子:

class AwesomeClass {            
   var answerToEverything: NSInteger = 42

   class func answerToEverything() -> NSInteger {
    return 42
  }
}

根据我的Swift理解,这里应该没有问题:var answerToEverythingclass func answerToEverything有不同的签名:var answerToEverything适用于实例,class func answerToEverything()适用于类。< / p>

但是,这会产生编译错误:

Invalid redeclaration of 'answerToEverything()

为什么具有相同名称的实例参数和类函数会出现此错误?

如果重要,我正在使用Xcode 7.3(7D175)。

注意:为什么实例方法实例参数不能具有相同的名称。编译器无法区分它们。但是,此问题与方法和实例参数有关。这与提议的重复问题不同。

1 个答案:

答案 0 :(得分:0)

Identifiers必须是唯一的,而不是它们的功能。在以下示例中也会发生相同的情况:

let ViewController: Int = 10

class ViewController: NSViewController {

}

编译器不会标记初始变量,但该类将被标记为重复。

如果您:

,则不适用
  1. 在一个模块中定义let ViewController: Int = 10 在另一个..
  2. 定义class ViewController: NSViewController
  3. 这两个模块分隔了身份空间(某种程度上的名称空间)