运行<REDACTED>
时,为什么值two
会被添加到变量#get_digest
的末尾?
以下是我的代码:
require 'digest'
require 'uri'
class <REDACTED>
def request_to_string(args = {})
encoded_search_query = URI.encode_www_form(args[:<REDACTED>])
"#{<REDACTED>}#{<REDACTED>}"
end
<redacted>
end
每次运行#<REDACTED>
时,two
的值都会更改为不应该出现的内容。什么似乎出错?
答案 0 :(得分:3)
将request_string: two
替换为request_string: two.dup()
。
Ruby通过引用传递变量,因此在get_digest
内部,当您使用<<
运算符时,它会就地修改变量。
答案 1 :(得分:3)
您正在直接修改args[:request_string]
中的String实例。
改为将其改为:
str = "#{args[:request_string]}"