2

別のクラスから構造体にアクセスすることは可能ですか?

元:

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() から構造体にアクセスするにはどうすればよいですか?

これに回避策はありますか?

ありがとうございました!

4

2 に答える 2

4

class の構造体は( class のスコープ内で使用できる)タイプAを定義しますが、構造体のメンバー関数を呼び出すにはそのインスタンスが必要です。例えば:A

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にアクセスできます。この場合、 のインスタンスを作成してそのメソッドにアクセスできます。 StructOfClassAStructOfClassAreturnLetterA()

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"
于 2016-01-21T19:54:08.243 に答える
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
    }
}
于 2016-01-21T19:55:17.233 に答える