更新哈希中的值
Update values in a hash
我试图在将值减去三之后更新我的散列值。例如,
extinct_animals = {
"Passenger Pigeon" => 1914,
"Tasmanian Tiger" => 1936,
"Eastern Hare Wallaby" => 1890,
"Dodo" => 1662,
"Pyrenean Ibex" => 2000,
"West African Black Rhinoceros" => 2011,
"Laysan Crake" => 1923
}
我有这段代码,它将值设置为减去三:
extinct_animals.each {|animal, year| puts year - 3}
和输出:
1911
1933
1887
1659
1920
我如何 return 使用键和新值的整个散列?
在块中,确保您正在使用 =
:
修改哈希
extinct_animals.each { |animal, year| extinct_animals[animal] = year - 3 }
=> {
"Passenger Pigeon" => 1911,
"Tasmanian Tiger" => 1933,
"Eastern Hare Wallaby" => 1887,
"Dodo" => 1659,
"Pyrenean Ibex" => 1997,
"West African Black Rhinoceros" => 2008,
"Laysan Crake" => 1920
}
不要使用 puts
。那只是写到控制台。
此解决方案的更简短版本是:
extinct_animals.each { |animal, _year| extinct_animals[animal] -= 3 }
这里我们在year
前加上下划线,表示该变量没有在块内使用。
您需要使用 Hash#transform_values!,它在 MRI v2.4 中首次亮相:
extinct_animals.transform_values! { |v| v - 3 }
#=> {"Passenger Pigeon"=>1911, "Tasmanian Tiger"=>1933,
# "Eastern Hare Wallaby"=>1887, "Dodo"=>1659, "Pyrenean Ibex"=>1997,
# "West African Black Rhinoceros"=>2008, "Laysan Crake"=>1920}
extinct_animals
#=> {"Passenger Pigeon"=>1911, "Tasmanian Tiger"=>1933,
# "Eastern Hare Wallaby"=>1887, "Dodo"=>1659, "Pyrenean Ibex"=>1997,
# "West African Black Rhinoceros"=>2008, "Laysan Crake"=>1920}
我试图在将值减去三之后更新我的散列值。例如,
extinct_animals = {
"Passenger Pigeon" => 1914,
"Tasmanian Tiger" => 1936,
"Eastern Hare Wallaby" => 1890,
"Dodo" => 1662,
"Pyrenean Ibex" => 2000,
"West African Black Rhinoceros" => 2011,
"Laysan Crake" => 1923
}
我有这段代码,它将值设置为减去三:
extinct_animals.each {|animal, year| puts year - 3}
和输出:
1911
1933
1887
1659
1920
我如何 return 使用键和新值的整个散列?
在块中,确保您正在使用 =
:
extinct_animals.each { |animal, year| extinct_animals[animal] = year - 3 }
=> {
"Passenger Pigeon" => 1911,
"Tasmanian Tiger" => 1933,
"Eastern Hare Wallaby" => 1887,
"Dodo" => 1659,
"Pyrenean Ibex" => 1997,
"West African Black Rhinoceros" => 2008,
"Laysan Crake" => 1920
}
不要使用 puts
。那只是写到控制台。
此解决方案的更简短版本是:
extinct_animals.each { |animal, _year| extinct_animals[animal] -= 3 }
这里我们在year
前加上下划线,表示该变量没有在块内使用。
您需要使用 Hash#transform_values!,它在 MRI v2.4 中首次亮相:
extinct_animals.transform_values! { |v| v - 3 }
#=> {"Passenger Pigeon"=>1911, "Tasmanian Tiger"=>1933,
# "Eastern Hare Wallaby"=>1887, "Dodo"=>1659, "Pyrenean Ibex"=>1997,
# "West African Black Rhinoceros"=>2008, "Laysan Crake"=>1920}
extinct_animals
#=> {"Passenger Pigeon"=>1911, "Tasmanian Tiger"=>1933,
# "Eastern Hare Wallaby"=>1887, "Dodo"=>1659, "Pyrenean Ibex"=>1997,
# "West African Black Rhinoceros"=>2008, "Laysan Crake"=>1920}