首页 > 解决方案 > 声明一个类内部的结构

问题描述

我有一个带有子类的类,在子类中有一个结构。我想按名称调用这个结构。我想用这些声明一个变量并给出name number1number2自己的数据。

class Main {
    var name:String
    init(name:String){
        self.name = name
    }
}
class SubMain: Main {
    override init(name:String){
        super.init(name: name)
    }
    struct Test {
        var number1:Int
        var number2:Int
    }
}

我尝试过声明 subMain,并在声明我调用了Teststruct 但它不起作用之后。寻找解决方案:

var main2 = SubMain(name: "hello")
main2.Test(number1:15,number2:20)

标签: swift

解决方案


您的用例有点奇怪,在另一种类型中声明内部类型的主要原因是您想在外部类型中使用内部类型。

一个例子

class SubMain: Main {
    var test: Test?

    override init(name:String){
        super.init(name: name)
    }

    convenience init(name: String, test: Test) {
        self.init(name: name)
        self.test = test
    }

    struct Test {
        var number1:Int
        var number2:Int
    }
}

进而

var main2 = SubMain(name: "hello")
var main3 = SubMain(name: "world", test: .init(number1: 1, number2: 2))

但是要使用您的示例,您应该通过外部类型而不是该类型的实例来访问它

var test = SubMain.Test(number1: 1, number2: 2)

推荐阅读