Come non stampare l'ultima riga da irb?

Salve a tutti,

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 :slight_smile:

Ciao Ignazio,

2009/11/15 Ignazio M. [email protected]

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”]

Ciao,
Antonio

http://ThinkCode.TV - Screencast e videocorsi di programmazione
http://antoniocangiano.com - Zen and the Art of Programming
http://math-blog.com - Mathematics is wonderful!
Follow me on Twitter: http://twitter.com/acangiano
Author of “Ruby on Rails for Microsoft Developers” (Wrox, 2009)

Grazie mille :slight_smile:

…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

ciao
Massimo

maner never wrote:

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 :slight_smile:

grazie mille!!!