From: merch-redmine@...
Date: 2020-08-05T21:05:32+00:00
Subject: [ruby-core:99489] [Ruby master Misc#17104] Why are interpolated	string literals frozen?

Issue #17104 has been updated by jeremyevans0 (Jeremy Evans).


If you would like the behavior changed, you should file a feature request for it, and add it to the agenda of a future developer meeting.

----------------------------------------
Misc #17104: Why are interpolated string literals frozen?
https://bugs.ruby-lang.org/issues/17104#change-86945

* Author: bughit (bug hit)
* Status: Closed
* Priority: Normal
----------------------------------------
```rb
#frozen_string_literal: true

def foo(str)
  "#{str}"
end

fr1 = 'a'
fr2 = 'a'
fr1_1 = foo(fr1)
fr2_1 = foo(fr2)

puts fr1.__id__, fr2.__id__, fr1_1.__id__, fr2_1.__id__

puts fr1_1 << 'b'
```

Isn't the point of frozen literals to avoid needless allocations? But interpolated strings are allocated each time, so freezing appears pointless. 




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>