이 코드가 배열 내의 요소 만 삭제하는 이유는 무엇입니까? for 루프는 각 값 0부터 3까지 반복하고 각 요소를 한 번에 하나씩 삭제합니다. 하지만 [0]과 [2] 만 삭제합니다. 내가 도대체 뭘 잘못하고있는 겁니까? "delete_at"메서드 짝수 배열 요소 만 삭제합니다.
UPDATE--
advance--
a=%w(ant bat cat dog)
puts a.inspect #output: ["ant", "bat", "cat", "dog"]
for k in (0..3)
a.delete_at(k)
end
puts a.inspect #output: ["bat", "dog"]
감사드립니다 답변 주셔서 감사합니다; 나는 지금 내가하고있는 것을보고있다. 배열의 각 요소를 삭제하려면 Array 메서드 'shift'가 적절할 것입니다. 예 :
for each in (0..3)
a.shift
print a
end
이렇게하면 첫 번째 요소가 배열 밖으로 이동하고 후속 요소가 한 셀 앞으로 이동합니다. 'each'를 사용하도록 권장 해 주셔서 감사합니다. 기본 문법임을 알 수 있습니다.
UPDATE 2--
코드의 다음 섹션 적절한 루비 구를보다 잘 나타내는 있을까?
(0..3).to_a.each do
a.shift
p a
end
그리고 글렌에게 배열의 내용 삭제에 대한 제안을 해주신 것에 감사드립니다.
업데이트 코드는 Ruby 방식으로 작성되지 않았습니다. 'each'는'[1,2,3] .each {| n |}와 같이 배열에 대한 반복자입니다. p n}', for 루프의 변수가 아닙니다. –
"코드의 다음 섹션이 올바른 루비 구문을 더 잘 나타낼까요?" 사실, 그렇지 않습니다. 작동하지 않기 때문입니다. 스크립트로 또는 IRB에 코드를 입력하여 코드를 실행 해 보았습니까? –
예; 나는 IRB와 .rb에서 시도해 보았고 두 가지 방법으로 작동한다. 이전 예제와 같은 배열을 사용했습니다.빈 배열을 남겨두고 네 개의 요소를 모두 삭제해야합니다. 대안으로 무엇을 제안합니까? – shellAdept