Discussion 解説
This iterator calls next()
on its base iterator and evaluates the result with the predicate
closure. As long as the predicate returns true
, this method returns nil
. After the predicate returns false
, for a value received from the base iterator, this method returns that value. After that, the iterator returns values received from its base iterator as-is, and never executes the predicate closure again. If calling the closure throws an error, the sequence ends and next()
rethrows the error.
このイテレータは、next()
をそれの基底イテレータ上で呼び出します、そして結果をpredicate
クロージャで評価します。述部がtrue
を返す限り、このメソッドはnil
を返します。述部がfalse
を返した後、基底イテレータから受け取った値に対して、このメソッドはその値を返します。その後、イテレータはそれの基底イテレータから受け取った値をそのまま返します、そして決して述部クロージャを再び遂行しません。クロージャを呼び出すことがエラーをスローするならば、シーケンスは終了します、そしてnext()
はそのエラーを再スローします。