반응형
Ruby Array find_first 객체?
배열 문서에 누락된 내용이 있습니까?특정 기준을 충족하는 개체를 하나까지 포함하는 배열이 있습니다.저는 그 물건을 효율적으로 찾고 싶습니다.문서에서 제가 생각하는 최고의 아이디어는 다음과 같습니다.
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
하지만 저는 두 가지 이유로 만족하지 못합니다.
- 그거
select
첫 번째 히트 후에 우리가 도망칠 수 있었음에도 불구하고, 나는 모든 어레이를 횡단하게 했습니다. - 저는 후보자들을 납작하게 만들기 위해 (조건이 있는) 코드 줄이 필요했습니다.
두 작업 모두 0개 또는 1개의 만족스러운 개체가 있다는 것을 미리 알고 있기 때문에 낭비입니다.
제가 원하는 것은 다음과 같습니다.
array.find_first(block)
이 값은 블록이 true로 평가하는 첫 번째 객체 또는 nil을 반환하여 해당 객체에서 트래버설을 종료합니다.
제가 직접 써야 하나요?Array의 다른 모든 훌륭한 방법들은 그것이 거기에 있다고 생각하게 만들고 저는 그것을 보지 않습니다.
질문을 이해할 수 없거나 Enumerable#find가 당신이 찾던 것입니다.
배열을 사용합니다.detect
블록이 true를 반환하는 첫 번째 값을 반환하려는 경우 방법
[1,2,3,11,34].detect(&:even?) #=> 2
OR
[1,2,3,11,34].detect{|i| i.even?} #=> 2
블록이 true를 반환하는 모든 값을 반환하려면 다음을 사용합니다.select
[1,2,3,11,34].select(&:even?) #=> [2, 34]
문서에서 찾기 방법을 놓치신 것 같습니다.
my_array.find {|e| e.satisfies_condition? }
당신은 그 대상 자체가 필요합니까 아니면 단지 만족하는 대상이 있는지만 알면 됩니다.전자의 경우 yes: 찾기:
found_object = my_array.find { |e| e.satisfies_condition? }
그렇지 않으면 사용할 수 있습니다.any?
found_it = my_array.any? { |e| e.satisfies_condition? }
후자는 조건을 만족시키는 것을 발견하면 "참"으로 보석할 것입니다.전자도 마찬가지이지만 개체를 반환합니다.
언급URL : https://stackoverflow.com/questions/2381163/ruby-array-find-first-object
반응형
'prosource' 카테고리의 다른 글
해시/AML에서 모든 빈 요소를 제거하시겠습니까? (0) | 2023.06.02 |
---|---|
$lookup 연산자를 사용한 다중 조인 조건 (0) | 2023.06.02 |
Excel: 셀에서 여러 용어 검색 (0) | 2023.06.02 |
Visual Basic에서 문자열을 정수로 변환하려면 어떻게 해야 합니까? (0) | 2023.06.02 |
루비: "frozen_string_literal: true"라는 코멘트는 무엇을 의미합니까? (0) | 2023.06.02 |