Ruby에서 배열의 요소를 반복하고 각 단계에서 모든 요소가 포함 된 배열을 사용할 수 있습니까? [4,2,8]
에 대한 예를 들어 배열을 반복하고 각 단계마다 하나씩 남겨 두십시오.
[2,8]
[4,8]
[4,2]
Ruby에서 배열의 요소를 반복하고 각 단계에서 모든 요소가 포함 된 배열을 사용할 수 있습니까? [4,2,8]
에 대한 예를 들어 배열을 반복하고 각 단계마다 하나씩 남겨 두십시오.
[2,8]
[4,8]
[4,2]
누락 된 요소가 필요하지 않는 한은 실제로 직접 가능하지 않습니다. 하지만 당신은 그것을 직접 프로그램 할 수 있습니다 :
옵션 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]
뭔가를하고 새로운 배열을 만들 수 있습니다 에 대한 색인이있는 항목을 제외한 항목들.
[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)}
: 출력
[4,2,8].combination(2).each do |ary|
p ary
end
:
[4, 2]
[4, 8]
[2, 8]
이에, 블록에 굴복되어 생성 된 각각의 하위 배열 대문자를 ary
으로 변경하면 값으로 원하는 것을 할 수 있습니다.
'ary에서 첫 번째 n 개의 요소를 버리고 배열의 나머지 요소를 반환합니다. '한 요소 만 삭제하려고합니다. –
대신 편집 - 슬라이스 방법을 참조하십시오 (필자는 문서를 잘못 읽었을 것임). –