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.
