Доступ к структуре из одного класса в другой

Можно ли получить доступ к структуре из другого класса?

например:

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
    }
}

Как я могу получить доступ к структуре из класса A() в классе B()?

есть ли обходной путь с этим?

Спасибо!

2 ответа

Решение

Структура в классе 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, который дает вам доступ к типу 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"

Вы только что объявили структуру 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
    }
}
Другие вопросы по тегам