哈希的Ruby哈希

时间:2012-02-29 17:00:52

标签: ruby hash

我需要有一个哈希来收集结果,例如:

results = Hash.new()

results['127.0.0.1'] = Hash.new()
results['127.0.0.2'] = Hash.new()

results['127.0.0.1']['port'] = '80'
results['127.0.0.2']['port'] = '80'

results['127.0.0.1']['ver'] = 'abc'
results['127.0.0.1']['ver'] = 'def'

它似乎工作正常,但现在我可以显示结果吗? :) 我想要:

ip: 127.0.0.1
port: 80
ver: abc
ip: 127.0.0.2
port: 80
ver: def

非常感谢!

2 个答案:

答案 0 :(得分:2)

定义哈希的更好方法:

result = {
  '127.0.0.1' => {
    port: 80,
    ver: 'abc'
  },
  '127.0.0.2' => {
    port: 80,
    ver: 'def'
  }
}

然后:

result.each do |key, value|
  puts "ip: #{key}"
  value.each { |k,v| puts "\t#{key}: #{value}" }
end

如果你为哈希添加一些额外的选项,这个方法也会起作用。

但是,如果你只想调试关于awesome_print的阅读。

答案 1 :(得分:2)

results.each do |k, v| 
    puts "IP: #{k}, Port: #{v['port']}, Ver: #{v['ver']}"
end