将struct从一个类访问到另一个类

时间:2016-01-21 19:45:07

标签: swift swift-structs

是否可以从另一个类访问结构?

例如:

class A{
    struct structOfClassA {
        func returnLetterA () -> String{
            return "a"
        }
    }
}

class B{
    let classA = A()

    init(){
        classA.structOfClassA.returnLetterA // this is what I want to achieve
    }
}

如何从B类()中的A类()访问结构?

有解决方法吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

A中的结构定义了类型(可以在类A的范围内使用),但是您需要实例它能够调用结构的成员函数。 E.g:

class A {
    struct StructOfClassA {
        func returnLetterA() -> String{
            return "a"
        }
    }

    var structOfClassA = StructOfClassA() 
        /* Instance of 'StructOfClassA' structure type */
}

class B {
    let classA = A()

    init() {
        let myLetter = classA.structOfClassA.returnLetterA()
        print(myLetter)
    }
}

var myB = B() // prints "a"

或者,您可以让B成为A的子类,这样您就可以从超类中访问类型 StructOfClassA,在这种情况下,您可以可以创建StructOfClassA实例并访问其方法returnLetterA()

class A {
    class StructOfClassA {
        func returnLetterA() -> String{
            return "a"
        }
    }
}

class B : A {
    let classA = A()

    override init() {
        let myLetter = StructOfClassA().returnLetterA()
        print(myLetter)
    }
}

var myB = B() // prints "a"

答案 1 :(得分:0)

您刚刚在A类中声明了结构A,但您还必须从结构A中创建一个实例。

class A{
    struct SomeStruct {
        func returnLetterA () -> String{
            return "a"
        }
    }
    let A = SomeStruct()
}

class B{
    let classA = A()

    init(){
        let letter = classA.A.returnLetterA() // this is what I want to achive
    }
}