루비의 "or"와 ||의 차이는 무엇입니까?
다른 점은 무엇입니까?or
그리고.||
루비에 있는 교환원들?아니면 그냥 선호하는 건가요?
이것은 작업자 우선 순위의 문제입니다.
||
는 보다 순우높습다니보다 우선 .or
.
두 개(三進法, 三進法, 三進法)을 포함한 .? :
( ) 및당할(( )=
어떤 것을 선택하면 진술의 결과에 영향을 미칠 수 있습니다.
다음을 사용한 다른 예를 보려면 이 질문을 참조하십시오.and
/&&
.
또한 발생할 수 있는 몇 가지 불쾌한 일에 주의해야 합니다.
a = false || true #=> true
a #=> true
a = false or true #=> true
a #=> false
앞의 두 진술 모두 다음과 같이 평가합니다.true
두 세트는 지세하 2트는입니다.a
false
이래=
가 우순 위가다낮습다니보다 .||
그나보다높은러보다 더 .or
.
다른 사람들이 이미 설명했듯이, 유일한 차이점은 우선 순위입니다.그러나, 저는 두 가지 차이점이 실제로 있다는 것을 지적하고 싶습니다.
and
,or
그리고.not
보다 훨씬 낮은 우선 순위를 가지다&&
,||
그리고.!
and
그리고.or
우선 순위는 같지만,&&
보다 우선 순위가 높습니다.||
일반적으로, 사용을 피하는 것이 좋습니다.and
,or
그리고.not
및사를 합니다.&&
,||
그리고.!
들어 핵심양식 합니다.)예를 들어 Rails 핵심 개발자는 운영자 양식 대신 키워드 양식을 사용하는 패치를 거부합니다.
그것들이 존재하는 이유는 부울 공식 때문이 아니라 제어 흐름 때문입니다.그들은 펄의 잘 알려진 것을 통해 루비로 들어갔습니다.do_this or do_that
서 관구용, 디에어do_this
아온다를 합니다.false
또는nil
오류가 있고 그 때만 해당되는 경우.do_that
(, 또있니습게한하슷▁(비▁executed▁the▁also▁is다다▁there▁instead▁(니an있)do_this and then_do_that
관용구.)
예:
download_file_via_fast_connection or download_via_slow_connection
download_latest_currency_rates and store_them_in_the_cache
때때로, 이것은 사용하는 것보다 제어 흐름을 약간 더 유창하게 만들 수 있습니다.if
또는unless
.
이 경우 연산자가 "잘못된"(즉, 동일한) 우선 순위를 갖는 이유를 쉽게 알 수 있습니다. 어쨌든 동일한 표현으로 함께 나타나지 않습니다.그리고 그들이 함께 나타날 때, 여러분은 일반적으로 그들이 단순히 왼쪽에서 오른쪽으로 평가되기를 원합니다.
and
/or
제어 흐름을 위한 것입니다.
Ruby는 이 구문을 유효한 구문으로 허용하지 않습니다.
false || raise "Error"
그러나 이는 유효합니다.
false or raise "Error"
당은첫번작만수들있다습니품으로 만들 수 .()
하지만 사용하기or
올바른 방법입니다.
false || (raise "Error")
puts false or true
--> 인쇄: false
puts false || true
--> 인쇄: 참
이러한 연산자를 사용하는 방법:
||, &&
부울 논리를 위한 것입니다. or, and
제어 흐름을 위한 것입니다.예.
do_smth if may_be || may_be
우리는 여기서 상태를 평가합니다.
do_smth or do_smth_else
우리는 워크플로우를 정의합니다. 이는 다음과 같습니다.do_smth_else unless do_smth
간단한 예를 들어보겠습니다.
> puts "a" && "b"
b
> puts 'a' and 'b'
a
레일즈에서 잘 알려진 관용구는 다음과 같습니다.render and return
라고 말하는 지름길입니다.return if render
,하는 동안에render && return
작동하지 않습니다.자세한 내용은 레일즈 문서의 "이중 렌더 오류 방지"를 참조하십시오.
or
와 동일하지 않습니다.||
사용만||
연산자 대신 연산자or
교환입니다.
몇 가지 이유가 있습니다.대상:
or
연산자의 우선 순위가 다음보다 낮습니다.||
.or
보다 낮은 우선 순위를 가집니다.=
할당 연산자.and
그리고.or
우선 순위는 같지만,&&
보다 우선 순위가 높습니다.||
.
둘다요.or
그리고.||
피연산자 중 하나가 참일 경우 true로 평가합니다.첫 번째 피연산자가 거짓인 경우에만 두 번째 피연산자를 평가합니다.
와 마찬가지로and
사이의 유일한 차이점or
그리고.||
그들의 우선 순위입니다.
삶을 흥미롭게 만들기 위해서,and
그리고.or
우선 순위는 같지만,&&
보다 우선 순위가 높습니다.||
.
모포크의 대답에 덧붙이자면, 그것은 의미론의 문제이기도 합니다. or
그것은 훨씬 더 읽기 때문에 좋은 관행으로 여겨집니다.||
.
언급URL : https://stackoverflow.com/questions/2083112/difference-between-or-and-in-ruby
'programing' 카테고리의 다른 글
C#은 첫 번째 패스 예외 필터링을 지원하지 않는 이유는 무엇입니까? (0) | 2023.05.31 |
---|---|
텍스트 편집을 위한 첫 글자 대문자화 (0) | 2023.05.31 |
Ruby에서 map(&:method) 구문에 인수를 제공할 수 있습니까? (0) | 2023.05.31 |
레일에서의 OOO 설계:물건을 두는 곳 (0) | 2023.05.31 |
번들러로 보석 하나만 업데이트 (0) | 2023.05.31 |