2012-08-29 5 views
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]

답변

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.each do |server| 
    puts server['hostname'] 
    puts server['ip'] 
    puts 
end 
: 다음
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'}, 
] 

은 당신이 할 수있는 각각을 반복하기
5

당신은 모든 i를 사용할 필요가 없습니다 수있는 방법, 바로이 작업을 수행 :

server.each do |x| 
    print x['hostname'] 
    print x['ip'] 
end 
1

i0으로 설정하면 server[i].each에 도달하면 server[0].each으로 전화 할 수 있습니다. 비록 열거하고있는 것을 바꾸지 않는 숫자가 i 증가하더라도. 올바른 코드 :

server.each 

server의 모든 요소를 ​​열거하십시오.

관련 문제