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

标签 swift

<分区>

这是一个人为的例子:

class AwesomeClass {            
   var answerToEverything: NSInteger = 42

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

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

但是,这会导致编译器错误:

“answerToEverything()”的重新声明无效

为什么同名的实例参数和类函数会报错?

以防万一,我使用的是 Xcode 7.3 (7D175)。

注意:实例方法实例参数 不能同名是有道理的。编译器无法区分它们。但是,这个问题是关于 方法和实例 参数的。这与提议的重复问题不同。

最佳答案

Identifiers 必须是唯一的,这与它们的功能无关。在以下示例中也会发生同样的情况:

let ViewController: Int = 10

class ViewController: NSViewController {

}

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

这不适用于以下情况:

  1. 在一个模块中定义 let ViewController: Int = 10 在另一个..
  2. 定义 类 ViewController: NSViewController

两个两个模块分隔身份空间(某种意义上的命名空间)

关于swift - 在 Swift 中,为什么同名的实例参数和类函数会产生无效的重声明错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36459606/

相关文章:

ios - 如何使用 Swift 在饼图中正确设置 xValuePosition 和 yValuePosition?

SwiftUI:更改基于 NavigationBarTitle 的 TabbedView 标签的更好方法

arrays - Swift - 如何将 Any 转换为 Array\Dictionary?

swift - 为什么我的 2D 图像在使用 ARKit 显示时会改变大小?

ios - 关闭 UIViewController 时重新加载 TableView?

ios - 有效检测碰撞

swift - 估计某些文本的 UICollectionView 单元格的大小

ios - 来自其他类的函数的回调

ios - 仅用于滑动的 UIPageControl

swift - UIButton的 Action 自动需要延迟响应