我在这里有一些简单的代码,我从哈希中获取数据并推入数组并使用collect调用来修改数组。但是,在程序结束时,我的原始哈希正在被修改。我理解Ruby使用引用,但我不确定我哪里出错了。
hash = Hash.new
hash ={"a" => "2.3M", "b" => "1.2B"}
revenue = []
revenue << hash["a"]
revenue << hash["b"]
revenue.collect! do |rev|
if rev.include? "B"
rev = rev.gsub!("B","").to_f * 1000000000
elsif rev.include? "M"
rev = rev.gsub!("M","").to_f * 1000000
else
rev = rev
end
end
p revenue # => [2300000.0, 1200000000.0]
p hash # => {"a"=>"2.3", "b"=>"1.2"} Why do the M and B dissapear?
谢谢你们!
答案 0 :(得分:0)
忽略!
中的gsub!
。这样gsub
将在修改字符串之前复制字符串。