Jer*_*ith 10 ruby ruby-on-rails
我想创建一个带有来自数组的索引的哈希.
ary = ["a", "b", "c"]
h = Hash.new(ary.each{|a| h[a] = 0})
Run Code Online (Sandbox Code Playgroud)
我的目标是从这样的哈希开始:
h = {"a"=>0, "b"=>0, "c"=>0}
Run Code Online (Sandbox Code Playgroud)
以便稍后当哈希值发生变化时,我可以使用h.default重置它
不幸的是,我设置哈希的方式不起作用......任何想法?
McS*_*tch 10
您应该h
首先实例化您的哈希,然后用数组的内容填充它:
h = {}
ary = ["a", "b", "c"]
ary.each{|a| h[a] = 0}
Run Code Online (Sandbox Code Playgroud)
使用散列的默认值功能
h = Hash.new(0)
h["a"] # => 0
Run Code Online (Sandbox Code Playgroud)
在这种方法中,没有设置密钥.
h.key?("a") # => false
Run Code Online (Sandbox Code Playgroud)
其他方法是在访问时设置丢失的密钥.
h = Hash.new {|h, k| h[k] = 0}
h["a"] # => 0
h.key?("a") # => true
Run Code Online (Sandbox Code Playgroud)
即使在这种方法中,key?
如果您之前没有访问过密钥,操作也会失败.
h.key?("b") # => false
h["b"] # => 0
h.key?("b") # => true
Run Code Online (Sandbox Code Playgroud)
你总是可以使用具有最小边界条件的蛮力.
h = Hash.new.tap {|h| ["a", "b", "c"].each{|k| h[k] = 0}}
h.key?("b") # => true
h["b"] # => 0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18276 次 |
最近记录: |