2016-04-12 18 views
0

是否可以創建計算數組屬性,還是需要創建一個重載函數來完成此操作?swift類可以使用計算屬性數組

I.E.難道這是改寫爲屬性

class myclass (
    private var myInternalArray[pvtstrct]() 
init(){ 
<loop building myInternalArray.insert(struct, at Index) .....> 
} 



func lfof(index: Int, value: String) { 
    myInternalArray(index) = PrivateCoversionFromString(value) 
} 

func lfof(index: Int) -> String { 
    return PrivateConversionToString(myInternalArray(index)) 
} 

回答

2

看來,你正在尋找的功能是對subscripts官方雨燕參考部分。

你的第一個函數是setter,第二個函數是getter。你可以使用一個subscript使它少的尷尬:

class MyClass { 

    private var _privateArray: [SomeType] 

    subscript(index: Int) -> String { 
     get { 
      return toString(_privateArray[index]) 
     } 
     set(newValue) { 
      _privateArray[index] = fromString(newValue) 
     } 
    } 

    func fromString(value: String) -> SomeType { 
     // The code that turns a string into SomeType 
    } 

    func toString(value: SomeType) -> String { 
     // The code that turns SomeType into a string 
    } 
} 

這段代碼是從The Swift Programming Language (Swift 2.2)調整。

+0

我明白如何在這種情況下工作。我有的問題是獲得我需要傳遞給我的內部函數的索引和值,因爲這是一個計算轉換爲內部數組。 – user6194042

+0

您應該在'get {}'和'set {}'塊中對內部數組進行翻譯。也許如果你能詳細說明上下文,我們可以根據你的需要進行調整。 – catalandres

+0

我擴展了這個例子。我改變了你使用的函數的名字,只是爲了讓它更具可讀性。我使用了'SomeType',因爲我不知道你的私有數組的類型。 – catalandres