2016-01-21 35 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 
    } 
}