我有一个键值的散列,我想对所有键进行小写。但是我不想创建一个局部变量,我宁愿从功能上做到这一点。
不:x = downcase_keys(params_hash)
但是:params_hash.downcase_keys
如何在红宝石中执行此操作?
我不明白您为什么将此问题标记为functional-programming
,似乎您正在寻找一种方法来调用Hash
对象。
请注意,这样做可能会遇到问题,因为重复的密钥将被覆盖。
h = {"a" => 1, "B" => 2}
# Singleton method on the object
def h.downcase_keys
temp = map {|k,v| [k.downcase, v]}.to_h
clear
merge! temp
end
h.downcase_keys()
p h # {"a"=>1, "b"=>2}
# Method available on all Hash objects
class Hash
def downcase_keys
temp = map {|k,v| [k.downcase, v]}.to_h
clear
merge! temp
end
end
h = {"a" => 1, "B" => 2}
h.downcase_keys()
p h # {"a"=>1, "b"=>2}
def downcase_keys(hash)
hash.downcase_keys
end
h = {"C" => 1, "B" => 2, "D" => 3}
downcase_keys(h)
p h # {"c"=>1, "b"=>2, "d"=>3}