2016-04-12 15 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