RubyWart: Missing Name Errors (AGAIN!)

  • Thread starter rantingrickjohnson
  • Start date
R

rantingrickjohnson

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!!!!

============================================================
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

============================================================
Resulting Emotional State
============================================================
ಠ_ಠ
 
R

Robert Klemme

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top