On Tuesday, September 11, 2012 5:22:10 PM UTC-4, Masterleep wrote:
>
> Maybe something like a StringPool


That's a big one, and it would be something that needs to be addressed in 
Ruby, not in Rails. But the problem is that you would have unintuitive 
behavior for those used to doing things like:

s = 'Error'
s.chomp!('or')

In today's Ruby and jruby-1.7.0.preview2:

$ irb
jruby-1.7.0.preview2 :001 > "Error".object_id
 => 2042 
jruby-1.7.0.preview2 :002 > "Error".object_id
 => 2044 
jruby-1.7.0.preview2 :003 > "Error".chomp!('or').object_id
 => 2046 
jruby-1.7.0.preview2 :004 > s = "Error"
 => "Error" 
jruby-1.7.0.preview2 :005 > s.object_id
 => 2048 
jruby-1.7.0.preview2 :006 > s.chomp!('or')
 => "Err" 
jruby-1.7.0.preview2 :007 > s.object_id
 => 2048 

See, when you are just working with strings willy nilly, it creates new 
instances and you don't have to worry about things like the "bang" methods 
altering the same object.

In a StringPool'd ruby, the bang methods would need to return a string that 
was the same object_id so that past implementations that depend on object 
equivalence would still work, but it could not alter the "Error" string in 
the StringPool or things would go terribly wrong.

Feel free to take this up on the ruby list, and post back the link. I'm 
sure that those guys could figure out a way to make it work if they've not 
already discussed it, but my guess is it would be a breaking major change, 
even if it is necessary to reduce # of objects and make things faster.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-core/-/GbH73B1EQmQJ.
To post to this group, send email to rubyonrails-core@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-core+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en.

Reply via email to