On 05/01/2013 07:15 AM,
rantingri...@gmail.com wrote:
> Same bowel movement, different cess pool!
>
> Can someone please explain the logic of having undefined symbols default to random values instead of throwing a NameError? Because this is making me F'ING NUTS PEOPLE!!!!
They don't. Also, this is not about an undefined Symbol but about an
unassigned member variable.
> ============================================================
> Code Sample
> ============================================================
> class Foo
> def foo
> $stdout.write("@poo = #{@poo}\n")
> end
> end
>
>
> ============================================================
> Interactive Session
> ============================================================
> rb> f = Foo.new
> #<Foo:0x79e6680>
> rb> f.foo
> @poo = 7
That output does not come from the code above:
irb(main):001:0> class Foo
irb(main):002:1> def foo
irb(main):003:2> $stdout.write("@poo = #{@poo}\n")
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> f = Foo.new
=> #<Foo:0x8f8bb84>
irb(main):007:0> f.foo
@poo =
=> 8
What you probably did:
irb(main):001:0> class Foo
irb(main):002:1> def foo
irb(main):003:2> $stdout.write("@poo = #{@poo}")
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> f = Foo.new
=> #<Foo:0x9285344>
irb(main):007:0> f.foo
@poo = => 7
Whatever interactive Ruby you used does not print "=> " in front of the
inspect of the last value. Now you also see why IRB does print this prefix.
> ============================================================
> Resulting Emotional State
> ============================================================
> ಠ_ಠ
It may actually be the other way round.
Kind regards
robert