Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby Select 메서드 사용 방법(예제 포함)

Ruby의 select 메소드를 사용하여 객체 배열을 필터링할 수 있습니다.

예를 들어 모두 찾을 수 있음 목록의 짝수.

select 없이 다음과 같습니다.

even_numbers = []

[1,2,3,4,5,6].each do |n|
  if n.even?
    even_numbers << n
  end
end

even_numbers

아주 간단한 것에 대한 꽤 많은 양의 코드입니다!

select 사용법을 알아봅시다. .

방법 선택 예

선택을 사용하려면 블록이 필요합니다.

블록 내에서 true로 평가되는 것을 반환해야 합니다. 또는 false , 및 select 이를 사용하여 배열을 필터링합니다.

<블록 인용>

이 기사를 읽으면 Ruby의 부울 값에 대해 배울 수 있습니다.

예시 :

[1,2,3,4,5,6].select { |n| n.even? }

이것은 소개의 첫 번째 예제와 동일한 작업을 수행하지만 훨씬 적은 코드를 사용합니다.

사실, 우리는 이것을 훨씬 더 줄일 수 있습니다.

좋아요 :

[1,2,3,4,5,6].select(&:even?)

이러한 종류의 바로 가기는 배열의 모든 요소에서 직접 메서드를 호출해야 하는 경우에만 작동합니다.

Btw, select를 사용할 수도 있습니다. 해시와 함께.

:

stock = {
  apples: 10,
  oranges: 5,
  bananas: 1
}

stock.select { |k, v| v > 1 }

# {:apples=>10, :oranges=>5}

k 위치 키 및 v를 나타냅니다. 가치를 나타냅니다.

내 말은 :

"1보다 큰 주식을 가진 모든 과일을 찾아주세요."

다른 방법과 선택 결합

select 메소드를 다른 Enumerable 메소드와 결합할 수 있습니다.

특히 with_index .

:

fruits = %w(apple orange banana)

fruits.select.with_index { |word, idx| idx.even? }

# ["apple", "banana"]

이렇게 하면 개체(이 경우 문자열) 자체 대신 인덱스를 사용하여 필터링할 수 있습니다.

인플레이스 어레이 필터링

select 사용 배열에서 항상 새 배열을 만듭니다.

대신 원래 배열을 변경하려면 select!를 사용할 수 있습니다. 방법.

방법은 다음과 같습니다. :

fruits = %w(apple orange banana)

fruits.select! { |fruit| fruit.start_with? "a" }

# ["apple"]

느낌표로 끝나는 메소드(예:select! )는 새 개체를 반환하는 대신 개체를 변경하지만 이 규칙은 언어 자체에 의해 적용되지 않습니다.

우리 사이의 협약일 뿐입니다.

찾기 대 선택

선택은 목록을 필터링하고 결과가 포함된 배열을 얻고 싶을 때 유용합니다.

하지만 하나의 개체만 찾으려면 어떻게 해야 합니까?

find를 사용할 수 있습니다. 방법.

좋아요 :

letters = %w(a aa aaa aaaa)

letters.find { |l| l.size == 3 }
# "aaa"

letters.find { |l| l.size == 10 }
# nil

찾기는 첫 번째 일치 또는 nil을 제공합니다. 찾을 수 없는 경우.

모두 찾기 방법 이해

find_all이 궁금하시다면 메서드 및 find와 관련되는 방식 &select ...

매우 간단합니다!

  • find_all 메소드는 select의 별칭입니다. .
  • find 메서드를 사용하면 많은 개체가 아닌 하나의 특정 개체를 찾을 수 있습니다.

Ruby 2.6은 select에 대한 또 다른 별칭을 추가합니다. :

filter

선택의 반대말은 무엇입니까?

원하는 요소를 선택하는 대신 원하지 않는 요소를 제거할 수 있습니다.

선택이 간편함 :

[1,2,3,4,5,6].select { |n| n != 4 }

하지만 좀 더 명확하게 하는 방법이 있습니다.

그 방법은 reject입니다. .

:

[1,2,3,4,5,6].reject { |n| n == 4 }

성능이나 기타 면에서 기술적인 이점을 얻지는 못하지만 코드를 개선할 것입니다.

레일 선택 방법

Rails 모델로 작업하고 select를 사용할 수도 있다는 것을 배울 때 혼란스러워 하지 않기를 바랍니다. 거기.

알고 계셔야 합니다...

select 방법이 다릅니다!

:

Fruit.select(:id, :name, :color)

select를 사용할 때 ActiveRecord 사용 데이터베이스에서 특정 열을 요청하는 모델입니다.

내가 아는 한 이것은 대부분 성능상의 이유로 수행됩니다.

이에 대한 마지막 참고 사항 :

Rails 앱 내에서 일반 배열로 작업하는 경우 select 이 기사 전체에서 이야기한 방법입니다.

요약

배열, 범위 및 해시와 같은 객체 컬렉션을 작업하는 데 Ruby에서 가장 유용한 방법 중 하나인 select에 대해 배웠습니다.

Ruby Select 메서드 사용 방법(예제 포함)

이제 편집기를 열고 사용할 차례입니다.

읽어주셔서 감사합니다!