gpt4 book ai didi

ios - 在 swift 中,当我的类有同名的子类时如何引用最顶层的类

转载 作者:可可西里 更新时间:2023-11-01 00:23:49 26 4
gpt4 key购买 nike

在 Swift 中:

  • 如何将最顶层的 myObject 分配给 innerObj 变量?
  • swift 是否有某种命名空间运算符让我从全局命名空间创建 myObject

考虑下面的代码。

//my object that can init with a message=string
class MyObject {
init(message: String) {
println(message)
}
}
//here I define a global works fine
let global = myObject(message: "this works")


//other class
class ViewController: UIViewController {
//defines an inner class with same name
class MyObject {
func failsFunction(){
//cannot invoke initializer for type "ViewController.myObject" with an argument of type (String)
let innerObj = myObject("how can I refer to the topmost myObject here?")
}
}

}

最佳答案

我的第一个回答是“不要那样做”。这在技术上是合法的,因为这两个类具有独特的范围,但它非常令人困惑,并且从现在起 6 个月后当你回到这段代码并且不记得你有一个全局类和一个具有相同名称的 ViewController 的子类。

如果您打算忽略该建议,Lou 提供了您的解决方案:在顶层创建一个 typeAlias 并在您的 ViewController 类中使用它,以便您可以在 ViewController 中引用全局类。

其次,类名应该以大写字母开头。所以 class myObject 应该是 class MyObject。这是语言的记录约定。

第三,myObject 是一个糟糕的类名。它不会让您知道该类(class)的用途。即使这是一个学习练习,您仍然应该遵循良好的编码习惯。它培养良好的习惯,并且测试代码有一种在真实项目中找到自己的方法,或者作为演示代码发布在某个地方,等等。

关于ios - 在 swift 中,当我的类有同名的子类时如何引用最顶层的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31029365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com