嗨,我刚刚开始学习ruby,我正在尝试遍历我创建的数组,如下所示:
server[0] = ['hostname' => 'unknown01', 'ip' => '192.168.0.2', 'port' => '22']
server[1] = ['hostname' => 'unknown02', 'ip' => '192.168.0.3', 'port' => '23']
server[2] = ['hostname' => 'unknown03', 'ip' => '192.168.0.4', 'port' => '24']
我尝试使用此代码:
i=0
server[i].each do |x|
print x['hostname']
print x['ip']
i+=1
end
但它只通过服务器[0]循环我如何循环通过服务器[0-3]
答案 0 :(得分:5)
您根本不需要使用i
,只需执行此操作:
server.each do |x|
print x['hostname']
print x['ip']
end
答案 1 :(得分:1)
您正在做的是将i
设置为0
,因此当您转到server[i].each
时,您正在呼叫server[0].each
。即使你增加i
,也不会改变你所枚举的内容。正确的代码是:
server.each
枚举server
中的每个元素。
答案 2 :(得分:0)
这可能不是你认为的那样。由于您将键/值对放在方括号内,因此它最终成为一个哈希的数组(其他语言称为地图和词典)。可能你想用大括号交换方括号,如下所示:
servers = []
servers[0] = {'hostname' => 'unknown01', 'ip' => '192.168.0.2', 'port' => '22'}
servers[1] = {'hostname' => 'unknown02', 'ip' => '192.168.0.3', 'port' => '23'}
servers[2] = {'hostname' => 'unknown03', 'ip' => '192.168.0.4', 'port' => '24'}
但是,由于你只是按索引设置每一个,你不需要以这种方式构建它,你可以将它们放在数组中各自的位置。
servers = [
{'hostname' => 'unknown01', 'ip' => '192.168.0.2', 'port' => '22'},
{'hostname' => 'unknown02', 'ip' => '192.168.0.3', 'port' => '23'},
{'hostname' => 'unknown03', 'ip' => '192.168.0.4', 'port' => '24'},
]
然后迭代你可以做的每一个:
servers.each do |server|
puts server['hostname']
puts server['ip']
puts
end