0

こんにちは私はルビーを学び始めたばかりで、私が作成した配列を次のようにループしようとしています:

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]をループする方法

4

3 に答える 3

5

使用する必要はまったくありませんi。次のようにしてください。

server.each do |x|
    print x['hostname']
    print x['ip']
end
于 2012-08-29T21:10:10.697 に答える
1

に設定iしている0ので、に到達するとserver[i].each、を呼び出していますserver[0].each。インクリメントiしても、列挙しているものは変わりません。正しいコードは次のとおりです。

server.each

のすべての要素を列挙しserverます。

于 2012-08-29T21:13:11.743 に答える
0

これはおそらくあなたが思っていることをしていないでしょう。キーと値のペアを角かっこで囲んでいるため、最終的には1つのハッシュの配列になります(他の言語ではマップや辞書と呼ばれます)。おそらく、角かっこを次のような中かっこと交換する必要があります。

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
于 2012-08-29T21:38:14.107 に答える