questo è il mio primo post e spero di non fare una domanda (troppo)
banale visto che mi sto avvicinando da pochissimo a questo fantastico
linguaggio (provengo da Java, Php e C/C++).
Uso molto spesso irb per fare delle prove col codice che sto per
scrivere, mi ci trovo benissimo, l’unica cosa che mi da un po noia è
vedere sempre quell’ultima riga ogni volta che eseguo un comando; mi
spiego meglio con un esempio:
sto cercando un metodo in una classe; quindi scrivo una regexp per
trovarlo così:
r = \blabla\
digito quindi:
Classe.methods.each {|m| puts m if m =~ r }
per trovare tutti i metodi che matchano la mia regexp, il codice
funziona ma mi viene comunque stampata la lista di tutti i metodi della
classe che mi satura il terminale… come posso farmi stampare solo la
lista dei metodi e non tutti i metodi della classe?
Grazie
Gnagno
Magari c’è un metodo migliore per trovare un metodo di una classe data
una regexp, non mi dispiacerebbe saperlo
sto cercando un metodo in una classe; quindi scrivo una regexp per
trovarlo così:
r = \blabla\
r = /blabla/
digito quindi:
Classe.methods.each {|m| puts m if m =~ r }
per trovare tutti i metodi che matchano la mia regexp, il codice
funziona ma mi viene comunque stampata la lista di tutti i metodi della
classe che mi satura il terminale… come posso farmi stampare solo la
lista dei metodi e non tutti i metodi della classe?
Ti ritorna tutta la lista perché irb valuta l’espressione che hai
inserito.
Per rendere la cosa più leggibile, puoi semplicemente ritornare un valore
diverso. Ad esempio potresti fare
così:
Kernel.methods.each {|m| puts m if m =~ r } && true
print
printf
sprintf
=> true
Ma each non è il metodo migliore per quello che vuoi fare tu.
Semplicemente
usa select:
Kernel.methods.select {|m| m =~ r }
=> [“print”, “printf”, “sprintf”]
…per trovare tutti i metodi che matchano la mia regexp, il codice
funziona ma mi viene comunque stampata la lista di tutti i metodi della
classe che mi satura il terminale… come posso farmi stampare solo la
lista dei metodi e non tutti i metodi della classe?
Di default, irb ti visualizza il risultato dell’ultima istruzione
eseguita. Per disabilitare questo (e stampare solo esplicitamente,
tramite puts), digita:
conf.echo=false
Di default, irb ti visualizza il risultato dell’ultima istruzione
eseguita. Per disabilitare questo (e stampare solo esplicitamente,
tramite puts), digita:
conf.echo=false
ciao
Massimo
Ottimo, ora irb funziona come piace a me
grazie mille!!!
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.