setter computado para um subscrito de uma matriz em Swift [duplicado]

Esta pergunta já tem uma resposta aqui:

Declaração abreviada de setter para um subscrito de uma matriz no Swift 2 respostas

Para ser breve, o que eu quero alcançar é, por exemplo:

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
      }
    }
}

Eu sei que subscrito não é um acessador para matriz, mas qual é a alternativa mais conveniente para fazer exatamente isso?

Eu realmente aprecio respostas sucintas, se possível! Muito obrigado!

Editar:

Para estender minha explicação para @jrturton,

O que estou tentando obter é que sempre que as ações [i] estiverem definidas como um novoValor, eu gostaria de fazer alguns cálculos extras, como reposicionar a subvisão respectiva das ações [i].

Mas se eu disseractions[3] = "randomMethod", o setter computado para toda a matriz será chamado. Direito? Então, eu gostaria de encontrar uma maneira de que, quandoactions[3] está definido como newValue, uma funçãorepositionView(3) pode ser chamado, por exemplo.

Conheço outras maneiras de fazê-lo, mas minha pergunta simplesmente pergunta se existe uma maneira mais conveniente, como no exemplo acima: um levantador computado, para fazer o que eu quero?

Edição 2:

Para mostrar ao @Vatsal Manot o que realmente quero dizer, removi o getter para subscrito, e aqui está um exemplo completo.swift (que não será executado devido a erro):

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(){

    }
}

questionAnswers(2)

yourAnswerToTheQuestion