Доступ к структуре из одного класса в другой
Можно ли получить доступ к структуре из другого класса?
например:
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
}
}