prosource

Ruby Array find_first 객체?

probook 2023. 6. 2. 20:36
반응형

Ruby Array find_first 객체?

배열 문서에 누락된 내용이 있습니까?특정 기준을 충족하는 개체를 하나까지 포함하는 배열이 있습니다.저는 그 물건을 효율적으로 찾고 싶습니다.문서에서 제가 생각하는 최고의 아이디어는 다음과 같습니다.

candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?

하지만 저는 두 가지 이유로 만족하지 못합니다.

  1. 그거select첫 번째 히트 후에 우리가 도망칠 수 있었음에도 불구하고, 나는 모든 어레이를 횡단하게 했습니다.
  2. 저는 후보자들을 납작하게 만들기 위해 (조건이 있는) 코드 줄이 필요했습니다.

두 작업 모두 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

반응형