답변:
and
우선 순위&&
가 낮지 만 동일 합니다. 둘 다 단락 평가를 사용 합니다.
경고 : and
우선 순위가 낮 =
으므로 일반적으로 피하는 것이 and
좋습니다. and
사용되어야 할 경우의 예 는 Rails Guide에서 " Double Render 오류 방지 "에 있습니다.
&&
동안, and
아주 특별한 경우에만 사용되어야한다.
and
반대의 같다 if
문 수정 : next if widget = widgets.pop
되고 widget = widgets.pop and next
그 퍼팅의 좋은 방법, 정말 그것을했다."내 머리에 "클릭 (그리고. or
반대의처럼 unless
수정.)
실제적인 차이점은 구속력이며, 준비되지 않은 경우 특이한 행동을 유발할 수 있습니다.
foo = :foo
bar = nil
a = foo and bar
# => nil
a
# => :foo
a = foo && bar
# => nil
a
# => nil
a = (foo and bar)
# => nil
a
# => nil
(a = foo) && bar
# => nil
a
# => :foo
같은 기능이 ||
및에 적용 or
됩니다.
a = foo and bar
그리고 (a = foo ) && bar
그 증명 and
보다 낮은 우선 순위를가집니다 &&
.
a = foo and bar
와 같습니다 (a = :foo) and nil
. 대입이 논리적으로 true 값 ( :foo
)을 반환하므로 두 번째 부분이 평가되고 실패하면을 반환 nil
합니다.
루비 스타일 가이드는 내가 할 수있는 것보다 더 잘 말한다 :
&& / || 사용 부울 식 및 / 또는 제어 흐름. (엄지 규칙 : 외부 괄호를 사용해야하는 경우 잘못된 연산자를 사용하고 있습니다.)
# boolean expression
if some_condition && some_other_condition
do_something
end
# control flow
document.saved? or document.save!
and
하거나 or
완전히 피하 라고 지시 하며, 요점을 가질 수 있습니다. 종종 제어 흐름에서의 사용은 더 분명 작성 할 수 if
/ unless
사업자 (예 : 어쨌든 document.save! unless document.saved?
)
||
와 &&
결합하면 프로그래밍 언어에서 부울 연산자에서 기대하는 우선 순위가 ( &&
매우 강하고 ||
약간 덜 강하다).
and
및 or
낮은 우선 순위를 가지고있다.
예를 들어, 달리 ||
, or
보다 낮은 우선 순위를가집니다 =
:
> a = false || true
=> true
> a
=> true
> a = false or true
=> true
> a
=> false
이와 달리 &&
, and
또한보다 낮은 우선 순위를가집니다 =
:
> a = true && false
=> false
> a
=> false
> a = true and false
=> false
> a
=> true
더 달리 무엇 &&
과 ||
, and
그리고 or
바인딩과 동일한 우선 순위 :
> !puts(1) || !puts(2) && !puts(3)
1
=> true
> !puts(1) or !puts(2) and !puts(3)
1
3
=> true
> !puts(1) or (!puts(2) and !puts(3))
1
=> true
약하게 바인딩 and
되며 or
제어 흐름 목적에 유용 할 수 있습니다 . http://devblog.avdi.org/2010/08/02/using-and-and-and-or-in-ruby/를 참조 하십시오 .
||
, or
보다 낮은 우선 순위가 =
"... 지금은 덕분에 더 의미가 있습니다!
and
보다 우선 순위가 낮습니다 &&
.
그러나 가정하지 않은 사용자의 경우 할당 연산자와 같이 우선 순위가 다른 연산자와 함께 사용하면 문제가 발생할 수 있습니다.
def happy?() true; end
def know_it?() true; end
todo = happy? && know_it? ? "Clap your hands" : "Do Nothing"
todo
# => "Clap your hands"
todo = happy? and know_it? ? "Clap your hands" : "Do Nothing"
todo
# => true
and
우선 순위가 낮으며 주로 다음과 같은 제어 흐름 수정 자로 사용합니다 if
.
next if widget = widgets.pop
된다
widget = widgets.pop and next
의 경우 or
:
raise "Not ready!" unless ready_to_rock?
된다
ready_to_rock? or raise "Not ready!"
내가 사용하는 것을 선호 if
하지만 and
때문에, if
더 이해할 수 있습니다 난 그냥 무시 있도록 and
하고 or
.
자세한 내용은 " Ruby에서"및 "및"또는 "사용 "을 참조하십시오.
이것이 Ruby 의도인지 또는 이것이 버그인지는 모르지만 아래 코드를 사용해보십시오. 이 코드는 Ruby 버전 2.5.1에서 실행되었으며 Linux 시스템에서 실행되었습니다.
puts 1 > -1 and 257 < 256
# => false
puts 1 > -1 && 257 < 256
# => true
or
||
도 참조하십시오 .