Thorsten Rossner wrote: > Hi, > > I often have to check if a methodcall A is not returning nil before > calling another method on the return value of the methodcall A. I'm > looking for a short and cheap (avoiding to call method A two times like > in this example where xmltag.get_text is method A: > textvalue = xmltag.get_text.value if xmltag.get_text > ) > The ideal solution would be a oneliner with only little complexity > calling method A just one time. Am I using the wrong approach here > anyway? This the solution I use in *my* code for this common problem: textvalue = xmltag.get_text.ergo.value This is my personal solution and I've never seen anyone use something like this, so it may not be a "common and accepted idiom" but it works well for me. YMMV code for "ergo": class NilClass def ergo @blackhole ||= Object.new.instance_eval do class << self for m in public_instance_methods undef_method(m.to_sym) unless m =~ /^__.*__$/ end end def method_missing(*args); nil; end self end @blackhole unless block_given? end end class Object def ergo if block_given? yield(self) else self end end end