[ruby-it] come non stampare l'ultima riga da irb?

Antonio Cangiano acangiano a gmail.com
Dom 15 Nov 2009 16:18:59 CET


Ciao Ignazio,

2009/11/15 Ignazio Mostallino <gnagno a gmail.com>

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


More information about the Ml mailing list