这是一个人为的例子:
class AwesomeClass {
var answerToEverything: NSInteger = 42
class func answerToEverything() -> NSInteger {
return 42
}
}
根据我的Swift理解,这里应该没有问题:var answerToEverything
和class func answerToEverything
有不同的签名:var answerToEverything
适用于实例,class func answerToEverything()
适用于类。< / p>
但是,这会产生编译错误:
Invalid redeclaration of 'answerToEverything()
为什么具有相同名称的实例参数和类函数会出现此错误?
如果重要,我正在使用Xcode 7.3(7D175)。
注意:为什么实例方法和实例参数不能具有相同的名称。编译器无法区分它们。但是,此问题与类方法和实例参数有关。这与提议的重复问题不同。
答案 0 :(得分:0)
Identifiers
必须是唯一的,而不是它们的功能。在以下示例中也会发生相同的情况:
let ViewController: Int = 10
class ViewController: NSViewController {
}
编译器不会标记初始变量,但该类将被标记为重复。
如果您:
,则不适用let ViewController: Int = 10
在另一个.. class ViewController: NSViewController
这两个模块分隔了身份空间(某种程度上的名称空间)