这可能非常明显,但我找不到答案。
如何从命名顺序获取整数索引,例如:
{ :first => 0, :second => 1, :third => 2, :fourth => 3 }
Ruby或Rails中是否内置了这样的内容?
感谢。
更新
感谢您的所有回复。这是我选择的解决方案:
def index_for(position)
(0..4).to_a.send(position)
end
但是数组只支持最多五分之一,所以它将仅限于此。
答案 0 :(得分:1)
如果您需要订购索引,则可能需要合并数组并具有
keys = [ :first, :second, :third, :fourth ]
hash = { :first => 0, :second => 1, :third => 2, :fourth => 3 }
hash.each_key { |x| puts "#{keys.index(x)}" }
上述方法仅适用于1.9。
答案 1 :(得分:0)
我通常会保留一组哈希键以维持秩序。
答案 2 :(得分:0)
您使用的是哪个版本的Ruby?对于Ruby 1.8,你不能,因为在这个版本中,哈希是一个无序的集合。这意味着当您插入键时,不会保留顺序。当您遍历散列时,键可能会以与您插入的顺序不同的顺序返回。
但在Ruby 1.9中已经发生了变化。
答案 3 :(得分:0)
查看Hash中混合的Enumerable 我认为 each_with_index 就是您要搜索的内容:
# Calls block with two arguments, the item and its index, for each item in enum.
hash = Hash.new
%w(cat dog wombat).each_with_index {|item, index|
hash[item] = index
}
hash #=> {"cat"=>0, "wombat"=>2, "dog"=>1}
答案 4 :(得分:0)
对于粉丝来说,语言学宝石显然也可以这样做How to convert 1 to "first", 2 to "second", and so on, in Ruby?