symbols_and_ranges/literal_range_ends_no_parens.rb

tests/_examples/symbols_and_ranges/literal_range_ends_no_parens.rb in the metorex repository.

# A range written with literal ends is built once, so the Strings at its ends
# are frozen. A range built from a variable keeps that String as it is.

letters = "a".."b"
p [letters.frozen?, letters.begin.frozen?, letters.end.frozen?]

start = +"c"
built = start.."d"
p [built.begin.frozen?, built.end.frozen?]

Output:

[true, true, true]
[false, false]