a, b, c = 0, 1, 2
[a, b, c].find(&:zero?) # => 0
블록이 false를 반환하는 첫 번째 요소를 찾는 방법이 있습니까? 즉Ruby에서 find와 반대되는 메소드가 있습니까?
[a, b, c].the_method(&:zero?) # => 1
, 그와 같은 방식으로 작동합니다 : 지금까지 내가이 작업을 수행하는 표준 방법이없는 말할 수
[a, b, c].reject(&:zero?).first
'거부 (...). 첫 번째 '는 당신이 겪은 것처럼 보입니다. - 그게 뭐가 잘못 됐나요? –
_Proc_를 사용하면 어떨까요? '[a, b, c] .find {| i | i! = 0}' – konus
@Joe 그 문제는 전체 컬렉션을 반복하고 모든 일치하는 값의 전체 배열을 만든 다음 모두 버리는 것입니다. 'find '의 장점은 첫 번째 일치하는 값을 찾자 마자 iterating을 멈추는 것입니다. – Phrogz