Hi,
I found some strange behaviour in Ruby 2.1.1 (compared to 1.9.3) on
Linux: Array.to_s doesn’t recursively call to_s on each item.
Below is a sample script which demonstrates the behaviour, and shows the
differences between 1.9.3 and 2.1.1.
What was the reasoning behind this change? Is it a bug?
Regards,
–Ashiq
Fails on ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]
Array.to_s doesn’t call Object.to_s
class Cat
attr_reader :name
def initialize(name)
@name = name
end
def to_s
return “#{@name} the cute kitty”
end
end
These two should be the same (sans square brackets)
Works in 1.9.3, not in 2.1.1
c = Cat.new(“Mittens”)
puts “Object: #{c}” # Mittens the cute kitty
puts “Array: #{[c]}” # [<Cat:0x00000001841d08 @name=“Mittens”>]