Ruby Language
열거 자
수색…
소개
Enumerator
는 제어 된 방식으로 반복을 구현하는 개체입니다.
개체는 조건이 충족 될 때까지 반복하는 대신 필요에 따라 값을 열거 합니다. 루프의 실행은 객체 소유자가 다음 값을 요청할 때까지 일시 중지됩니다.
열거자는 값의 무한한 흐름을 가능하게합니다.
매개 변수
매개 변수 | 세부 |
---|---|
yield | << 로 별명이 지정된 yield 응답합니다. 이 객체에 대한 항복은 반복을 구현합니다. |
사용자 지정 열거 자
피보나치 수에 대한 Enumerator
자를 만듭니다.
fibonacci = Enumerator.new do |yielder|
a = b = 1
loop do
yielder << a
a, b = b, a + b
end
end
이제 fibonacci
와 함께 Enumerable
메서드를 사용할 수 있습니다.
fibonacci.take 10
# => [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
기존 방법
each
블록과 같은 반복 메서드가 블록없이 호출되면 Enumerator
반환되어야합니다.
이것은 enum_for
메소드를 사용하여 수행 할 수 있습니다.
def each
return enum_for :each unless block_given?
yield :x
yield :y
yield :z
end
프로그래머는 Enumerable
연산을 작성할 수 있습니다.
each.drop(2).map(&:upcase).first
# => :Z
되감기
rewind
를 사용하여 열거자를 다시 시작하십시오.
ℕ = Enumerator.new do |yielder|
x = 0
loop do
yielder << x
x += 1
end
end
ℕ.next
# => 0
ℕ.next
# => 1
ℕ.next
# => 2
ℕ.rewind
ℕ.next
# => 0
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow