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.