nope = lambda do |bool| if @s1 == nil then return @s1 = bool end return @s2 = bool end def _nope(bool) if @s1 == nil then return @s1 = bool end return @s2 = bool end @s1, @s2 = nil, nil nope.call(true) ? false : true nope.call (true) ? false : true # this assertion passes OK if @s1 != @s2 then raise "nope.call" end @s1, @s2 = nil, nil _nope(true) ? false : true _nope (true) ? false : true # but this assertion fails! if @s1 != @s2 then raise "_nope" end =begin $ ruby ruby.rb ruby.rb:13: warning: don't put space before argument parentheses ruby.rb:19: _nope (RuntimeError) =end