2013-02-03 3 views

답변

1

누락 된 요소가 필요하지 않는 한은 실제로 직접 가능하지 않습니다. 하지만 당신은 그것을 직접 프로그램 할 수 있습니다 :

옵션 1 - 단지을 수행

a = [11,22,33,44,55] 

a.each_with_index { |e,i| 
    p e 
    p a.take(i) + a[i+1..-1] 
} 

옵션 2 - 배열과 통합 : 둘 중 하나에서

class Array 
    def each_excluded(&block) 
    self.each_with_index { |e, i| 
     yield(e, self.take(i) + self[i+1..-1]) 
    } 
    end 
end 

a.each_excluded { |e, rest| 
    p e 
    p rest 
} 

출력 :

11 
[22, 33, 44, 55] 
22 
[11, 33, 44, 55] 
33 
[11, 22, 44, 55] 
44 
[11, 22, 33, 55] 
55 
[11, 22, 33, 44] 
0

뭔가를하고 새로운 배열을 만들 수 있습니다 에 대한 색인이있는 항목을 제외한 항목들.

+0

'ary에서 첫 번째 n 개의 요소를 버리고 배열의 나머지 요소를 반환합니다. '한 요소 만 삭제하려고합니다. –

+0

대신 편집 - 슬라이스 방법을 참조하십시오 (필자는 문서를 잘못 읽었을 것임). –

0
[4, 2, 8].tap{|a| a.length.times{|i| 
    do_something_you_want_with(a[0...i]+a[i+1..-1]) 
}} 

또는

당신이 Array#combination를 원하는 것 정말 보이는
class Array 
    def each_but_one &pr 
    length.times{|i| pr.call(self[0...i]+self[i+1..-1])} 
    end 
end 

[4, 2, 8].each_but_one{|a| do_something_you_want_with(a)} 
0

: 출력

[4,2,8].combination(2).each do |ary| 
    p ary 
end 

:

[4, 2] 
[4, 8] 
[2, 8] 

이에, 블록에 굴복되어 생성 된 각각의 하위 배열 대문자를 ary으로 변경하면 값으로 원하는 것을 할 수 있습니다.

관련 문제