Bug report involving class variables

K

Ken Ballou

(Slight rant: I tried to submit this bug report through the tracker
system at redmine.ruby-lang.org. After trying twice to get a username
and password [since the first attempt would not recognize the username
and password even after I clicked the "confirm" link], I was finally
able to log in. When I tried to submit a new issue report, the form
complained that the "mailing-list" field could not be blank, even though
there were no choices in the drop-down box and I could not type in the
text area. I gave up.)

OK, on to the bug report. Since I didn't really understand the example
of class variables on pages 337-8 of "Programming Ruby 1.9", I decided
to try the code. I found that the output was different for Ruby 1.9.0
and Ruby 1.9.1p129, and neither agreed with the book. This seems like
it may be a defect in Ruby 1.9.

Version information:

1.9.0: ruby -v reports "ruby 1.9.0 (2006-06-08) [x86_64-linux]"
1.9.1: ruby -v reports "ruby 1.9.1p129 (2009-05-12 revision 23412)
[i686-linux]"

Here is the code I used for this test:

##### begin classvars.rb
class Holder
@@var = 99
def Holder.var=(val)
@@var = val
end
def Holder.read_var
@@var
end
def var
@@var
end
end

@@var = "top level variable"

a = Holder.new
puts "a.var: #{a.var}"
Holder.var = 123
puts "a.var: #{a.var}"

def a.get_var
@@var
end

puts "a.get_var: #{a.get_var}"
puts "@@var: #{@@var}"
puts "Holder.read_var: #{Holder.read_var}"
##### end classvars.rb

Here is the output:

Ruby 1.9.0:

a.var: 99
a.var: 123
a.get_var: top level variable
@@var: top level variable
Holder.read_var: 123

Ruby 1.9.1p129:

a.var: top level variable
a.var: 123
a.get_var: 123
@@var: 123
Holder.read_var: 123

(I'm not entirely sure I understand why the first call to a.var should
return the string "top level variable" but the second should return the
Fixnum 123 as the book claims, but that's not part of the bug report.)

Perhaps someone who has more luck than I do with the issue tracker
system can enter this report?

Thank you, and I vaguely apologize for the rant. I'm just feeling
beaten up by the issue tracker system.

- Ken
 

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

Members online

Forum statistics

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

Latest Threads

Top