为什么这个值被添加到我的变量的末尾?

时间:2014-08-18 16:25:14

标签: ruby string

运行<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的值都会更改为不应该出现的内容。什么似乎出错?

2 个答案:

答案 0 :(得分:3)

request_string: two替换为request_string: two.dup()

Ruby通过引用传递变量,因此在get_digest内部,当您使用<<运算符时,它会就地修改变量。

答案 1 :(得分:3)

您正在直接修改args[:request_string]中的String实例。

改为将其改为:

str = "#{args[:request_string]}"