2016-01-21 88 views
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

结构在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" 

或者,你可以让BA一个子类,它为您提供了从超,在这种情况下,你可以创建的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" 
+0

非常感谢您非常快速的回复,这一切对我来说都有意义。 谢谢! –

+0

@EncioPeter乐于助人。我会在上面添加一个附注。 – dfri

+0

@EncioPeter如果这回答你的问题,请确保你接受它作为答案。这有助于未来的用户更快找到解决方案! –

0

您刚刚在类A中声明了struct 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 
    } 
}