我一直在搞乱,并决定看看"abcde".replace("a", "e")
是否会返回"ebcde"
。事实证明,这不是替换工作的方式(我承认我猜测方法名称,看看是否存在这样的用途)。
在阅读文档后,我发现它有奇怪的行为。
string = "abcde"
string.replace("e") #=> "e"
string
现在是"e"
。
替换方法有什么意义?对我来说,它看起来像一个setter方法,但你可以轻松地做string = "e"
。
是否有替换的特定用例?
答案 0 :(得分:4)
replace
更改当前实例的内容,而不是分配新实例。见差异:
a = 'old_string'
b = a
b.replace 'new_string'
a
# => "new_string"
VS
a = 'old_string'
b = a
b = 'new_string'
a
# => "old_string"
答案 1 :(得分:1)
与Uri的答案相似:
a = "foo"
# => "foo"
a.object_id
# => 70267150553520
a.replace("bar")
# => "bar"
a.object_id
# => 70267150553520
答案 2 :(得分:1)
它可用于更改传递给方法的参数值:
def change(string)
string.replace('bar')
end
s = 'foo'
change(s)
s #=> 'bar'