Swift中数组下标的计算setter

为了简短起见,我想要实现的是例如:

var actions: [String]{
    get{
        if (_actions==nil){
            _actions = []
        }
        return _actions!
    }
    set{
        _actions = newValue
    }
    subscript(index:Int) -> String{
      set {
         assert(index<_actions.count && index>=0, "Index out of range")
         _actions[index] = newValue
      }
    }
}

我知道下标不是数组的访问器,但是这样做的最方便的替代方法是什么?

如果可能的话,我非常感谢您提供简洁的答案!非常感谢你!

编辑:

为了扩展我对@jrturton的解释,

我想要实现的是,每当action [i]设置为newValue时,我都想做一些额外的计算,例如重新定位action [i]的相应子视图。

但是,如果我说了actions[3] = "randomMethod",整个数组的计算设置器将被调用。正确的?因此,我想找到一种方法,例如,当actions[3]将其设置为newValue时,repositionView(3)可以调用一个函数

我知道有其他方法可以执行此操作,但是我的问题只是询问是否有更方便的方法(例如上面的示例):计算的二传手,可以执行我想要的操作?

编辑2:

为了显示@Vatsal Manot的真正含义,我删除了下标的getter,这是一个完整的example.swift(由于错误而不会运行):

import UIKit
import Foundation

class DWActionsSubmenu: UIView{
    var actions: [DWAction]{
        get{
            if (_actions==nil){
                _actions = []
            }
            return _actions!
        }
        set{
            _actions = newValue
        }
        subscript(index:Int) -> DWAction{
            set {
                assert(index<_actions.count && index>=0, "Index out of range")
                _actions[index] = newValue
                a()
            }
        }
    }

    var _actions: [DWAction]?

    init(actions:[DWAction]?){
        super.init()
        _actions = actions
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder:aDecoder)
    }

    func a(){

    }
}
杰特顿

我会将您的操作列表包装在一个自定义类中,然后可以通过下标访问该类。然后,可以在设置下标成员时添加要运行的块:

class ActionList {
    private var actions = [String]()

    var actionDidChange : ((Int) -> ())?

    subscript(actionIndex:Int) -> String {
        get {
            return actions[actionIndex]
        }
        set {
            actions[actionIndex] = newValue
            if let actionDidChange = actionDidChange {
                actionDidChange(actionIndex)
            }
        }
    }

    func addAction(action: String) {
        actions.append(action)
    }

    func addActions(newActions:[String]) {
        actions += newActions
    }
}

用法(在操场上):

let actionList = ActionList()
actionList.actionDidChange = {
    actionIndex in
    println("Action \(actionIndex) did change")
}

actionList.addActions(["One", "Two", "Three"])
actionList[2] = "New"
// Prints "Action 2 did change"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift中数组下标的速记setter声明

来自分类Dev

带有下标的Swift类似数组类行为

来自分类Dev

Swift数组“对象”没有名为下标的成员

来自分类Dev

错误:下标的值不是内核中的数组,指针或向量

来自分类Dev

Swift数组下标索引编制中的错误?

来自分类Dev

在数组中插入数据时出错-数组下标的类型'int [int]'无效

来自分类Dev

多维数组c ++中数组下标的无效类型'int [int]'

来自分类Dev

错误:数组下标的类型无效

来自分类Dev

在Swift中下标的含糊使用

来自分类Dev

如何指定在Swift中强制执行下标的一般约束?

来自分类Dev

awk数组下标的转换规则是什么?

来自分类Dev

编译错误-数组下标的类型'char [int]'无效

来自分类Dev

“在下标的作业中不允许使用NA”

来自分类Dev

ggplot2中带有下标的X标签

来自分类Dev

Matlab中具有非标量下标的Accumarray?

来自分类Dev

“在下标的作业中不允许使用NA”

来自分类Dev

带有不同签名的Swift下标,用于getter和setter

来自分类Dev

数组不计算Swift中的对象

来自分类Dev

C ++ 2D数组-数组下标的错误无效类型'int [int]'

来自分类Dev

带有字符数组的 C 警告:“警告:数组下标的类型为‘字符’”

来自分类Dev

尝试获取二维数组的列长度时,数组下标的类型“float[int]”无效

来自分类Dev

包含数组下标的表达式是否可以是标识符?

来自分类Dev

Python:如何将字典转换为可下标的数组?

来自分类Dev

数组下标的运算符[]错误无效类型'Config * [const char [8]]'

来自分类Dev

我收到数组下标的错误无效类型'float [int]'吗?

来自分类Dev

包含数组下标的表达式是否可以是标识符?

来自分类Dev

2d 矩阵上的数组下标的无效类型“int[int]”使用 4 作为循环

来自分类Dev

在 C 中加载一个数组及其下标的平方

来自分类Dev

在Swift中无法下标AnyObject类型的值

Related 相关文章

  1. 1

    Swift中数组下标的速记setter声明

  2. 2

    带有下标的Swift类似数组类行为

  3. 3

    Swift数组“对象”没有名为下标的成员

  4. 4

    错误:下标的值不是内核中的数组,指针或向量

  5. 5

    Swift数组下标索引编制中的错误?

  6. 6

    在数组中插入数据时出错-数组下标的类型'int [int]'无效

  7. 7

    多维数组c ++中数组下标的无效类型'int [int]'

  8. 8

    错误:数组下标的类型无效

  9. 9

    在Swift中下标的含糊使用

  10. 10

    如何指定在Swift中强制执行下标的一般约束?

  11. 11

    awk数组下标的转换规则是什么?

  12. 12

    编译错误-数组下标的类型'char [int]'无效

  13. 13

    “在下标的作业中不允许使用NA”

  14. 14

    ggplot2中带有下标的X标签

  15. 15

    Matlab中具有非标量下标的Accumarray?

  16. 16

    “在下标的作业中不允许使用NA”

  17. 17

    带有不同签名的Swift下标,用于getter和setter

  18. 18

    数组不计算Swift中的对象

  19. 19

    C ++ 2D数组-数组下标的错误无效类型'int [int]'

  20. 20

    带有字符数组的 C 警告:“警告:数组下标的类型为‘字符’”

  21. 21

    尝试获取二维数组的列长度时,数组下标的类型“float[int]”无效

  22. 22

    包含数组下标的表达式是否可以是标识符?

  23. 23

    Python:如何将字典转换为可下标的数组?

  24. 24

    数组下标的运算符[]错误无效类型'Config * [const char [8]]'

  25. 25

    我收到数组下标的错误无效类型'float [int]'吗?

  26. 26

    包含数组下标的表达式是否可以是标识符?

  27. 27

    2d 矩阵上的数组下标的无效类型“int[int]”使用 4 作为循环

  28. 28

    在 C 中加载一个数组及其下标的平方

  29. 29

    在Swift中无法下标AnyObject类型的值

热门标签

归档