Domanda

C'è un modo per sintetizzare getter / setter in AS3? E 'molto comune che si dispone di una classe con un sacco di variabili, in particolare in calcoli matematici (modello nel modello MVC), che si desidera esporre. C'è qualcosa di simile proprietà sintetizzare in Objective-C, che consente di generare getter / setter?

Grazie,

Nava

È stato utile?

Soluzione

EDIT: Se si desidera utilizzare l'IDE (Eclipse). Si può andare su rightClick classe-> Source-> Generare getter e setter

Non è lo stesso uso come sintetizzare, ma se si desidera solo per esporre loro e non c'è bisogno di usare la notazione getMethod (), può aiutare a dichiarare i metodi con le parole chiave get / set come questo.

public function get example() : int
{
             return example;
}
public function set example( value : String ) : void
{
             example = value;
}

Quando si utilizza il tempo di accesso è possibile utilizzare le variabili come se fossero pubbliche e metodi sarai chiamato al posto di un accesso diretto

Altri suggerimenti

Si può provare regex. Effettuare un backup prima di tentare questo .

Per esempio, se le variabili si chiamano private _str e si desidera che sia public getter / setter essere nominato str, è possibile utilizzare i seguenti modelli. Premere Ctrl-F in Flex Builder (o eclissi), spuntare la casella di controllo regex, e aggiungere i seguenti modelli per la ricerca e la sostituzione campi di input, rispettivamente. Ora hit 'Trova' per trovare la dichiarazione di proprietà e ha colpito 'Sostituisci' per generare setter e getter.

^((\t)+)private\s+var\s+_(\w+):(\w+)\s*;\s*(\n)

$0$5$1public function set $3(value:$4):void$5$1{$5$1$2_$3 = value;$5$1}$5$5$1public function get $3():$4$5$1{$5$1$2return _$3;$5$1}$5$5

Questo modello è stato testato su

        private var _str:String;//indented by two tabs

E ha generato con successo:

    private var _str:String;

    public function set str(value:String):void
    {
        _str = value;
    }
    public function get str():String
    {
        return _str;
    }

Per coloro che utilizzano Flex Builder 3 IDE, ci sono plug-in per la creazione e Piazza, ad esempio qui: http: //www.insideria. com / 2008/04 / flex-costruttore-miglioramenti-frammenti-e-todo.html (ci sono alcuni altri strumenti piccoli ma utili compilate su quel sito)

Questi possono essere usati per un getter / generazione più o meno confortevole setter.

Comunque io creo solo getter e setter esplicito se ho bisogno di mettere un po 'di codice aggiuntivo lì. Ci sono alcuni che dicono che rompe l'incapsulamento, se non si utilizza getter e setter. Tuttavia, con un linguaggio in cui è possibile aggiungere getter e setter in seguito senza cambiare l'interfaccia, non credo che questo è più vero. Per l'utente, è completamente trasparente se sta usando un'assegnazione variabile semplice o una funzione impostata varName (arg: oggetto):. Vuoto

E anche tenere a mente, che se si effettua una variabile [Bindable] (cioè senza un nome di evento esplicito), il compilatore crea getter e setter per la variabile wihtout ancora di accorgersene (tranne che ci sono già getter e setter di corso). Questo è BTW un modo rapido e sporco per implementare interfacce che dichiarano funzioni getter e setter

Se hai appena rendono una proprietà pubblica che non dovete preoccuparvi di getter e setter:

public var str:String;

Tuttavia, se avete bisogno di qualcosa lungo le linee di evento di dispacciamento per notificare se stessi di cambiamenti di proprietà, è necessario codificare da soli. Speriamo che tutto ciò IDE si sta utilizzando può aiutare generare questo tipo di codice per voi, o potrebbe essere necessario impostare una sorta di frammento di codice del DIE può iniettare per voi.

Evitare di copia ed incolla, se è possibile, sei destinato a perdere la modifica del nome di qualcosa che ti farà problemi lungo la strada.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top