programing

루비의 "or"와 ||의 차이는 무엇입니까?

i4 2023. 5. 31. 15:17
반응형

루비의 "or"와 ||의 차이는 무엇입니까?

다른 점은 무엇입니까?or그리고.||루비에 있는 교환원들?아니면 그냥 선호하는 건가요?

이것은 작업자 우선 순위의 문제입니다.

||는 보다 순우높습다니보다 우선 .or.

두 개(三進法, 三進法, 三進法)을 포함한 .? : ( ) 및당할(( )=어떤 것을 선택하면 진술의 결과에 영향을 미칠 수 있습니다.

여기 루비 연산자 우선순위 표가 있습니다.

다음을 사용한 다른 예를 보려면 이 질문을 참조하십시오.and/&&.

또한 발생할 수 있는 몇 가지 불쾌한 일에 주의해야 합니다.

a = false || true  #=> true
a  #=> true

a = false or true  #=> true
a  #=> false

앞의 두 진술 모두 다음과 같이 평가합니다.true 두 세트는 지세하 2트는입니다.afalse 이래=가 우순 위가다낮습다니보다 .|| 그나보다높은러보다 더 .or.

다른 사람들이 이미 설명했듯이, 유일한 차이점은 우선 순위입니다.그러나, 저는 두 가지 차이점이 실제로 있다는 것을 지적하고 싶습니다.

  1. and,or그리고.not보다 훨씬 낮은 우선 순위를 가지다&&,||그리고.!
  2. 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

반응형