From Ruby With With

Geplaatst door Danny Lagrouw vr, 24 maa 2006 12:10:00 GMT

Jarenlang was Pascal mijn favoriete taal, in verschillende verschijningsvormen: UCSD Pascal, Turbo Pascal, Object Pascal en tenslotte Delphi. Inmiddels is het zo’n 6 jaar geleden dat ik voor het laatst iets met Delphi heb gedaan, maar ik mis de taal niet echt. Pascal had echter één keyword dat ontzettend handig kon zijn, en dat (bijvoorbeeld) Java helaas niet heeft overgenomen: with. In Ruby is with niet ingebakken, maar met een trucje lukt het wel (zo las ik in een blogpost van Chris Eidhof, bedankt!). Breid eerst de Object class uit:

class Object
  def with
    yield self
  end
  # het kan nog anders, lees Chris' post!:
end

Daarna kun je with gebruiken op een willekeurig object:

Chatroom.find(1).messages.last.with do |m|
  m.created_at = Time.now
  m.save
  puts "Message: #{m.text} by #{m.user}" 
end

Je ziet, de elegantie zit in het feit dat je de opgezochte message niet in een tijdelijke variabele hoeft te bewaren; die krijg je automatisch in het with block.

Geplaatst in  | geen reacties

Reacties

(Laat url/e-mail achter »)

   Voorvertoning