programing

변수가 두 값 중 하나와 같은지 테스트

nasanasas 2020. 12. 31. 08:28
반응형

변수가 두 값 중 하나와 같은지 테스트


a1 인지 2 인지 테스트하고 싶습니다

나는 할 수있을 것이다

a == 1 || a == 2

그러나 이것은 반복이 필요합니다 a(긴 변수의 경우 성가시다)

나는 같은 것을하고 싶지만 a == (1 || 2)분명히 이것은 작동하지 않습니다.

내가 할 수있는 [1, 2].include?(a)나쁜 것이 아니라, 나를 파업하는 비트 읽기 어려워

관용적 인 루비로 어떻게 할 수 있는지 궁금합니다.


첫 번째 방법은 관용적 인 Ruby입니다. 불행히도 Ruby에는 Python과 동등한 기능이 없습니다 a in [1,2]. 당신 [1,2].include? a은 가장 가까운 대안이며 가장 자연스러운 방법에서 약간 거꾸로 생각합니다.

물론 이것을 많이 사용하면 다음과 같이 할 수 있습니다.

class Object
  def member_of? container
    container.include? self
  end
end

그런 다음 할 수 있습니다 a.member_of? [1, 2].


어떤 맥락에서 이것을 사용하고 있는지 모르겠지만 switch 문에 맞으면 다음과 같이 할 수 있습니다.

a = 1
case a
when 1, 2
  puts a
end

다른 이점은 대소 문자 같음 === 연산자를 사용할 때 원하는 경우 다른 동작에 대해 해당 메서드를 재정의 할 수 있다는 것입니다. 또 하나는 사용 사례를 충족하는 경우 범위도 함께 사용할 수 있다는 것입니다.

when 1..5, 7, 10

한 가지 방법은 "Matz"에게이 기능을 Ruby 사양에 추가하도록 청원하는 것입니다.

if input == ("quit","exit","close","cancel") then
  #quit the program
end

그러나 case-when 문을 사용하면 이미 정확하게 수행 할 수 있습니다.

case input when "quit","exit","close","cancel" then 
  #quit the program
end

이와 같이 한 줄로 작성하면 거의 if 문처럼 작동합니다. 맨 아래 예제가 맨 위 예제에 대한 좋은 임시 대체입니까? 당신이 판사입니다.


먼저 이것을 어딘가에 넣으십시오.

class Either < Array
  def ==(other)
    self.include? other
  end
end

def either(*these)
  Either[*these]
end

그런 다음 :

if (either 1, 2) == a
  puts "(i'm just having fun)"
end

다음과 같이 교차로를 사용할 수 있습니다.

([a] & [1,2]).present?

대체 방법.


a.to_s()=~/^(1|2)$/

아마도 나는 여기서 두껍게 느껴지지만, 나에게는 다음과 같은 것 같습니다.

(1..2) === a

...공장.

ReferenceURL : https://stackoverflow.com/questions/2196414/test-whether-a-variable-equals-either-one-of-two-values

반응형