어레이 설명서에서 누락 된 것이 있습니까? 특정 기준을 만족시키는 최대 하나의 객체를 포함하는 배열이 있습니다. 해당 객체를 효율적으로 찾고 싶습니다. 내가 문서에서 얻은 가장 좋은 아이디어는 다음과 같습니다.
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
그러나 나는 두 가지 이유로 불만족 스럽다.
- 그
select
날 우리가 첫 번째 히트 후 구제 한 수에도 불구하고, 전체 배열을 통과했다. - 후보자를 평평하게하기 위해 조건이있는 코드 줄이 필요했습니다.
두 작업 모두 만족스러운 객체가 0 또는 1 개라는 것을 알고 낭비됩니다.
내가 원하는 것은 다음과 같습니다.
array.find_first(block)
nil 또는 블록이 참으로 평가되는 첫 번째 객체를 반환하고 해당 객체의 순회를 종료합니다.
직접 써야합니까? Array의 다른 모든 위대한 방법은 그것이 있다고 생각하게하고 그것을 보지 못합니다.