在哈希表中是否可以添加没有值的键?我创建了一个哈希表(@j)和一个方法:
def add(hash)
@j.merge!(hash)
end
如何让添加没有值的键成为可能,例如:
@j.add('fish')
puts @j.entries
puts @j.keywords
=> {'fish' => nil}
=> fish
我的当前代码可以像这样添加键和值:
@j.add('fish' => 'animal')
但如果它像上面那样,只有密钥,那就不行了。
在哈希表中是否可以添加没有值的键?我创建了一个哈希表(@j)和一个方法:
def add(hash)
@j.merge!(hash)
end
@j.add('fish')
puts @j.entries
puts @j.keywords
=> {'fish' => nil}
=> fish
@j.add('fish' => 'animal')
@j.add {:key => nil}
def add(key_or_hash)
hash = key_or_hash.is_a?(Hash) ? key_or_hash : {key_or_hash.to_sym => nil}
@j.merge! hash
end
您可以将键设置为 nil 值,如下所示:
h = Hash.new
h["nil_key"] = nil
h.keys # => ["nil_key"]
def add(key, value = nil)
h = { key => value }
@j.merge!(h)
end
@j = { :a_key => "a_value" }
@j.add("fish")
@j.keys # => [:a_key, "fish"]
@j.add("another_key", "another_value")
@j.keys # => [:a_key, "fish", "another_key"]
@j # => [ :a_key => "a_value", "fish" => nil, "another_key" => "another_value"]
只需确保您在定义 @j 实例变量的任何类中定义 #add。
hash.without(:this, :that, :the_other)