변수가 두 값 중 하나와 같은지 테스트
a
1 인지 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
'programing' 카테고리의 다른 글
Babel 6을 ES5 자바 스크립트로 컴파일하려면 어떻게해야합니까? (0) | 2020.12.31 |
---|---|
이 Perl 정규식에서`\ s +`가`\ s \ s *`보다 훨씬 빠른 이유는 무엇입니까? (0) | 2020.12.31 |
사이트 배경으로 비디오? (0) | 2020.12.31 |
이 두 파이썬 shebangs의 차이점은 무엇입니까 (0) | 2020.12.31 |
Mac OS X에서 마우스 가속 비활성화 (0) | 2020.12.31 |