8

当文件具有编译指示时:

# frozen_string_literal: true

默认情况下,该文件中以文字形式写入的所有字符串都被冻结。当我希望我的字符串总体上是不可变的,因此正在使用编译指示,但想要有几个可变字符串时,推荐的编写方式是什么?

我能想到的只有:

String.new("foo")
4

2 回答 2

8

我错过了。推荐的方法是使用+@方法字符串文字。

(+"foo").frozen? # => false
(-"foo").frozen? # => true
"foo".frozen? # => true
于 2015-12-15T03:34:44.567 回答
4

您可以dup使用文字使其可变:

"foo".dup.frozen? # => false
于 2015-12-13T11:24:23.353 回答