Arrays 如何在swift中实现可选数组结构?
我想实现一个数组结构,它可以将单个元素标记为选中。因此,可以轻松访问该元素 我正在围绕Arrays 如何在swift中实现可选数组结构?,arrays,swift,Arrays,Swift,我想实现一个数组结构,它可以将单个元素标记为选中。因此,可以轻松访问该元素 我正在围绕Arraystruct创建一个包装器类。有没有什么好方法可以将Array方法委托给我的SelectableArray的内部数组 还是有其他更好的方法 class SelectableArray<Element: Comparable> { let array = Array<Element>() private var selectedIndex: Int? = .Non
Array
struct创建一个包装器类。有没有什么好方法可以将Array
方法委托给我的SelectableArray
的内部数组
还是有其他更好的方法
class SelectableArray<Element: Comparable> {
let array = Array<Element>()
private var selectedIndex: Int? = .None
var selectedElement: Element? {
guard let index = selectedIndex else {
return .None
}
return array[index]
}
func select(index: Int) {
selectedIndex = array.indices.contains(index) ? index : .None
}
func select(element: Element) {
selectedIndex = array.indexOf(element)
}
}
class SelectableArray{
让数组=数组()
私有变量selectedIndex:Int?=.None
变量selectedElement:元素{
guard let index=selectedIndex else{
返回,无
}
返回数组[索引]
}
函数选择(索引:Int){
selectedIndex=array.Indexs.contains(索引)?索引:。无
}
功能选择(元素:元素){
selectedIndex=array.indexOf(元素)
}
}
只需为包装类创建一个append
方法,并将数组
从let
更改为变量
:
class SelectableArray<Element: Comparable> {
var array = Array<Element>()
private var selectedIndex: Int? = .None
// other functions...
func append(element: Element) {
self.array.append(element)
}
}
class SelectableArray{
var数组=数组()
私有变量selectedIndex:Int?=.None
//其他功能。。。
func追加(元素:元素){
self.array.append(元素)
}
}
您能否提供一些您当前拥有的代码,以便更容易理解您试图实现的功能。可能不会。您必须编写自己的方法。但是,您可以创建子类NSArray
。或者您可以尝试扩展
已添加代码但尚未完全实现的数组
结构。需要添加逻辑以在数组更改时更新索引。问题是,当我想要修改数组时,我需要类似于selectableArray.array.append(…)
的代码。我只想selectableArray.append(…)
。如何将所有Array
方法委托给我的Wrapper
?我希望这个类的行为与vanillaArray
完全一样,并具有跟踪所选元素的附加功能。你不能!Swift中的数组是结构,因此不能继承它。如果扩展结构,则不允许添加新的存储属性(selectedIndex
)。实现您经常使用的功能,如附加
和下标
。其余部分必须通过数组
属性进行访问。我应该限定,如果您愿意返回Objective,您可以继承NSMutableArray
并将selectedIndex
添加为关联对象