swift没有嵌套类吗??

例如,我似乎无法从嵌套类访问master类的属性测试.

class master{
  var test = 2;

  class nested{
     init(){
       let example = test; //this doesn't work
     }
   }
 }

推荐答案

Swift的嵌套类与Java的嵌套类不同.它们就像一种Java的嵌套类,但不是你想的那种.

在Java中,内部类的实例会自动引用外部类的实例(除非内部类声明为static).如果有外部类的实例,则只能创建内部类的实例.这就是为什么在Java中你会说this.new nested().

在Swift中,内部类的实例独立于外部类的任何实例.就好像Swift中的所有内部类都是使用Java的static声明的.如果希望内部类的实例引用外部类的实例,则必须使其显式:

class Master {
    var test = 2;

    class Nested{
        init(master: Master) {
            let example = master.test;
        }
    }

    func f() {
        // Nested is in scope in the body of Master, so this works:
        let n = Nested(master: self)
    }
}

var m = Master()
// Outside Master, you must qualify the name of the inner class:
var n = Master.Nested(master:m)

// This doesn't work because Nested isn't an instance property or function:
var n2 = m.Nested()

// This doesn't work because Nested isn't in scope here:
var n3 = Nested(master: m)

Swift相关问答推荐

通过withstickedContinuation传递通用类型T

可编码:将字符串解码为自定义类型(ISO 8601日期,无时间组件)

向文本元素添加背景色失败

在visionOS RealityView中使用.GenerateText时,未显示Reality Composer Promaterial 纹理

将`@Environment`值赋给`Binding`参数

在Xcode SWIFT中运行用Ionic编写的函数

如何在SWIFT Memory中处理对VAR数组的更新(对COW感到困惑)

如何增加 NSStatusBar 图像大小?

如何隐藏集合视图中特定的单元格,以避免出现空白空间?

Swift Random Float Fatal Error:在无限范围内没有均匀分布

在 Swift 中增量写入大型文本文件的最佳方法

在 Swift 中为(递归)扩展提供默认实例参数

如何在 SwiftUI 中获取视图的位置

Swift:创建用于调用 C 函数的指针数组

如何让不同的组件拥有不同的动画?

Reality Composer Tap Trigger 问题

如何让 SwiftUI 中的文本在旋转框架的同时侧向显示?

更新我的 pod 导致 GoogleDataTransport Umbrella 标头出现错误

如何在 iOS Swift 中进行多线程、并发或并行?

类型myViewController不符合 Swift 中的协议 UIPIckerDataSource