目前正在尝试将哈希的所有字符串值调整为小写。此哈希包含多个值类型(nil,string,integer),因此在整个哈希中使用downcase运行会因哈希值中的nil值而发出错误。
NoMethodError: undefined method "downcase!" for nil:NilClass
我对Ruby很陌生,我不确定如何最好地运行此哈希并跳过零值或整数值。我试图使用.map将每个值转换为字符串,然后将值下调,但我要么没有看到最终结果的任何差异,要么我得到错误。
testHash = testHash.map(&:to_s)
testHash.map(&:downcase!)
(I've also attempted testHash.each {|k,v| v.downcase!}
我确信这大部分是我不知道如何正确地在Ruby中写出来。如果您需要其他信息,请告诉我们,谢谢。
答案 0 :(得分:2)
在下载
之前检查该值是否为有效字符串testHash.each { |k, v| v.downcase! if v.is_a?(String) }
答案 1 :(得分:1)
h = {a: nil, b: "Someword", c: 1}
h.map {|k,v| v.downcase! if v.is_a? String}
puts h #=> {:a=>nil, :b=>"someword", :c=>1}
这会奏效。我通过哈希映射并检查字符串的值,然后运行downcase!
方法。