2012-07-05 6 views
2

저는 루비를 처음 접했고 많은 자습서를 읽었습니다. 어제 나는 배열을 열거하고 그 배열의 부분 집합을 블록에 전달한 each 문 (또는 비슷한 문)의 예를 읽었습니다. 다음은 예제입니다. 그러나 구문이 잘못되었습니다 (또는 잘못된 메서드를 사용하고 있습니다). 이렇게하면 실제로 실행되지 않습니다. 내가 올바른 명령을 사용하여 경우배열을 열거하지만 배열의 하위 집합을 단일 요소 대신 블록에 전달합니다.

arry = ["a", "b", "c", "d", "e"] 

arry.each(3) {|a, b, c| puts a+b+c} 

이 인쇄 것이다 : abc bcd cde; 인덱스에서 시작하는 배열의 처음 세 멤버를 취하고 세 개의 인수를 모두 제공 할 수있을만큼 긴 문자열이 없을 때 열거가 끝납니다. 나는 그것을하는 법을 기억할 수 없다. 그리고 나는 그것을 찾을 수있는 옳은 일을 구글에게 보이지 않는다. 너희들 아는 사람 있니?

답변

8

each_cons(3)은 이와 유사하게 동작합니다. Enumerable (배열은 Enumerable을 포함합니다)에 있습니다. 그래서 찾을 수 없습니다.

+0

Arg !!! 나는 루비 의사 (ruby-doc)에 대한 전체 Array 섹션을 읽었고 Object의 자식이라는 것을 알았으므로 Object를 확인했다. Enumerables 모듈이 포함 된 것을 완전히 놓쳤습니다. 감사! – Noah

2

당신은 combination과 같은 것을 의미합니까?

arry.combination(3).each {|a, b, c| p a+b+c} 
+0

이것은 내가 찾고있는 것이 아니지만 매우 가까이에 있습니다. Coincedentally, 내가 일하고 있던 문제는 나중에 '조합'이 필요 했으므로 그 점에 대해 감사드립니다. :) – Noah

1

each_slice?

arry.each_slice(3) {|a,b,c| p a+b+c} 
+0

각 슬라이스는 a, b, c, c, d, nil이 아닌 a, b, c를 수행합니다. b, c, d 등 원하는 OP로 –

+0

@ FrederickCheung : 네 말이 맞아. 감사. – Linuxios

관련 문제