Cosa? Eh? Boh!

Due righe giusto per rimettere un po’ le mani su Ruby, che secondo me è il linguaggio di programmazione interpretato più elegante che c’è in giro.

Ho ripreso a sfogliare un manuale sullo sviluppo web agile con Ruby on Rails, e mi sono ritrovato davanti i famosi blocchi, porzioni di codice che possono essere passati come parametri a dei metodi.

def eh
   lista = %w{ come quando fuori piove }
   lista.each do |boh|
     yield boh
   end
 end
 eh {|cosa| puts cosa }

Il frammento di codice riportato si limita a stampare le stringhe “come”, “quando”, “fuori” e “piove” su quattro righe. Ovviamente è un modo un po’ contorto, che volendo si può fare in una sola riga o in mille altri modi differenti:

%w{ come quando fuori piove }.each {|cosa| puts cosa }

Questa infatti è una delle differenze tra Ruby e Python. In Python c’è in genere un solo modo raccomandato per ottenere un certo risultato (la cosiddetta pythonic way), mentre in Ruby ci sono tanti modi diversi, nessuno dei quali è da ritenersi il migliore. Ovviamente è bene evitare porcherie come quella del primo esempio mostrato, ma in linea di massima si può dare sfogo alla fantasia finché il codice resta corretto e, possibilmente, efficiente.