2013-11-14 11 views
9

Desidero inserire due alias per un metodo originale, ma non vedo l'abilità di alias_method di eseguire più alias contemporaneamente, piuttosto uno alla volta.Alias ​​un metodo più volte

Quindi c'è una possibilità di cambiare da questo:

alias_method :aliased_first_method, :first_method 
alias_method :aliased_first_method?, :first_method 

a qualcosa di simile:

alias_method [:aliased_first_method, :aliased_first_method?], :first_method 

io non sono interessato a creare metodi personalizzati.

+0

non vedo molto senso in quanto, ma se si vuole avere un one-liner, si potrebbe fare: '[: aliased_first_method,: aliased_first_method ?]. ogni {| nome | alias_method name,: first_method} '(e lo metti in un altro metodo in' Class', per dargli un nome se vuoi) – tessi

+0

ha senso se hai il codice superiore ripetuto due volte di seguito. – Zippie

risposta

16

Non credo ci sia un modo migliore di un semplice utilizzando ogni:

[:aliased_first_method, :aliased_first_method?].each{|ali| alias_method ali, :first_method} 
+0

Non quello che stavo cercando, ma grazie. Ho pensato che forse Ruby ha qualcosa di predefinito – Zippie

+0

Comprendo il tuo desiderio, ma questa risposta è corretta. AFAIK, non esiste un modo integrato per farlo. – Phrogz

2

Guardando il docs and source di alias_method, direi che ciò che si vuole, non è possibile senza un metodo personalizzato.

(Abbiamo solo dovuto rispondere alla mia quasi omonimo :))