来自[online ruby documentation] [1]的字符串类的替换方法:
replace(other_str)→str 用other_str中的相应值替换str的内容和污点。
s = "hello" #=> "hello"
s.replace "world" #=> "world"
1)它是什么意思"污点"?
2)这种方法的目的是什么?为什么要使用它而不仅仅是s = "world"
?我唯一的想法与指针有关,但我不知道如何在ruby中处理这个主题,如果是这样的话。
答案 0 :(得分:3)
你说这与指针有关是正确的。 s = "world"
将构造一个新对象并为s
指定一个指向该对象的指针。而s.replace "world"
修改s
已指向的字符串对象。
replace
会产生影响的一种情况是,无法直接访问变量:
class Foo
attr_reader :x
def initialize
@x = ""
end
end
foo = Foo.new
foo.x = "hello" # this won't work. we have no way to assign a new pointer to @x
foo.x.replace "hello" # but this will
replace
没有特别关注污染,文档只是声明它正确处理污染的字符串。解释该主题有更好的答案:What are the Ruby's Object#taint and Object#trust methods?