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

Ruby Any, All, None &One 사용 방법

오늘은 요소 배열, 해시 또는 Enumerable 모듈을 포함하는 기타 개체에 대해 조건문을 확인하는 데 도움이 되는 4가지 Enumerable 메서드에 대해 배웁니다.

Ruby Any, All, None &One 사용 방법

이 4가지 메서드는 true를 반환합니다. 또는 false .

내용

  • 1 Ruby 모든 방법
  • 전체 및 빈 배열 2개
  • 3 Ruby 없음 메서드
  • 4 Ruby Any 메소드
  • 5 Ruby One 메서드
  • 6 새로운 Ruby 2.5 기능
  • 7 요약
    • 7.1 관련

해보자!

루비 올 메소드

배열 안의 모든 문자열이 특정 크기를 가지고 있는지 확인하고 싶다면.

이렇게 하면 됩니다 :

def all_words_have_specific_size?(words)
  return false if words.empty?

  words.each do |str|
    return false unless str.size == 5
  end

  true
end

words = ["bacon", "orange", "apple"]

all_words_have_specific_size?(words)
# false
가 아니면 false를 반환합니다.

모든 문자열을 검사하고 크기가 원하는 크기가 아니면 false를 반환합니다. , 그렇지 않으면 true를 반환합니다. 마지막에.

이와 같은 것을 위한 많은 코드입니다.

매번 설정해야 한다고 상상해 보세요. 이런 종류의 검사를 하고 싶습니다.

수고가 많습니다!

여기서 우리가 관심을 갖는 유일한 것은 다음과 같습니다.

str.size == 5

확인 중인 상태입니다. .

이 작업을 수행하는 더 좋은 방법이 있습니까?

네!

all? 사용 모든 힘든 작업을 수행하는 방법입니다.

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

strings.all? { |str| str.size == 5 }

그게 다야.

전체 및 빈 배열

한 가지 알아야 할 사항:

all? 메소드는 true를 반환합니다. 빈 배열에서 호출하는 경우.

:

[].all? { |s| s.size == 1 }
# true

설명 :

요소가 false가 아니기 때문에 모든 요소는 true여야 합니다. .

이것이 바로 논리입니다.

루비 없음 메소드

all?의 역순을 원하시면 , none? 사용

예시 :

strings.none? { |str| str.size == 5 }

이것은 true를 반환합니다. 조건과 일치하는 문자열이 없는 경우 또는 false 하나 이상이 일치하는 경우.

if 문과 같습니다.

루비 모든 메소드

조건과 일치하는 요소가 있는지 알고 싶습니까?

any?를 사용할 수 있습니다. 방법!

좋아요 :

[1,2,3,4,5].any?
# true

이 특정 예에서 any? empty?의 역처럼 작동합니다. . 하지만 모든 상황에 적용되는 것은 아닙니다.

질문을 하고 있기 때문입니다. :

"이 배열 안에 TRUTHY 요소가 있습니까?"

배열에 비진리만 포함된 경우(nil /false ) 값은 false가 됩니다. , 하지만 배열은 실제로 비어 있지 않습니다.

:

[nil].any?
# false

이 메서드에 블록을 전달할 수도 있습니다.

[1,2,3].any? { |n| n > 0 }
# true

n > 0인지 확인합니다. true입니다. 적어도 하나의 요소에 대해.

루비 원 메소드

정확히 하나의 요소가 true를 반환하는지 확인할 수 있습니다. one? 방법.

예시 :

["a", 1, {}].one? { |obj| obj.kind_of?(Hash) }
# true

블록 없이 이것을 사용하여 배열이 정확히 하나의 진실 값(false 제외)을 포함하는지 확인할 수 있습니다. / nil ).

["a"].one?
# true

[].one?
# false

[nil].one?
# false

나는 size == 1을 고수할 것이다. 더 명확하기 때문입니다. one?에 익숙하지 않더라도 누구나 이해할 수 있습니다. 일반적이지 않은 방법입니다.

새로운 Ruby 2.5 기능

Ruby 2.5부터 이 4가지 방법(any? / all? / none? / one? ) 또한 grep의 인수처럼 작동하는 인수를 취합니다.

제 말은 다음과 같습니다. :

[:orange, :apple, :coconut].any?(Symbol)
# true

[1,2,3].all?(1..10)
# true

이것은 클래스, 정규식 또는 범위를 확인하려는 경우에 유용한 작은 지름길입니다.

요약

많은 작업을 절약할 수 있는 4가지 멋진 Ruby 메서드에 대해 배웠습니다! 이 메서드는 true 중 하나만 반환합니다. 또는 false .

이전에 이러한 방법을 사용해 본 적이 없다면… 지금 시도해 보시지 않겠습니까?

이 기사가 유용했다면 공유해 주세요.