루비의 "and"와 &&의 차이점은 무엇입니까?
사이의 차이점은 무엇입니까?&&그리고.and루비에 있는 교환원들?
and와 동일합니다.&&더 낮은 우선 순위로.둘 다 단락 평가를 사용합니다.
경고:and심지어 더 낮은 우선 순위를 가지고 있습니다.=그래서 당신은 보통 피하고 싶을 것입니다.and다음과 같은 경우의 예and사용해야 하는 항목은 레일 가이드의 "이중 렌더 오류 방지"에서 확인할 수 있습니다.
실질적인 차이는 결합 강도이며, 이는 준비가 되어 있지 않은 경우 특이한 행동으로 이어질 수 있습니다.
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.
Ruby Style Guide는 제가 할 수 있는 것보다 더 잘 말해줍니다.
부울식 및/또는 제어 흐름에 &&/|를 사용합니다. (엄수:외부 괄호를 사용해야 하는 경우 잘못된 연산자를 사용하는 것입니다.)
# boolean expression
if some_condition && some_other_condition
do_something
end
# control flow
document.saved? or document.save!
||그리고.&&프로그래밍 언어의 부울 연산자에서 기대하는 우선 순위로 바인딩합니다.&&매우 강합니다.||약간 덜 강함).
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-or-in-ruby/ 을 참조하십시오.
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에서 "and" 및 "or" 사용을 참조하십시오.
이것이 루비의 의도인지 버그인지 모르겠지만 아래 코드를 사용해보세요.이 코드는 Ruby 버전 2.5.1에서 실행되었으며 Linux 시스템에서 실행되었습니다.
puts 1 > -1 and 257 < 256
# => false
puts 1 > -1 && 257 < 256
# => true
그리고 첫 번째 조건만 확인하고 결과를 제공하며 두 가지 조건을 모두 강력하게 확인하고 논리적 결과를 제공합니다.
언급URL : https://stackoverflow.com/questions/1426826/difference-between-and-and-in-ruby
'programing' 카테고리의 다른 글
| 여러 줄 텍스트 상자의 최대 길이 지정 (0) | 2023.06.11 |
|---|---|
| .NET에서 SSIS 패키지를 실행하는 방법은 무엇입니까? (0) | 2023.06.11 |
| "malloc(0)"이 null이 아닌 포인터를 반환하면 "free"로 전달할 수 있습니까? (0) | 2023.06.11 |
| MessageBox의 GTK 구현 (0) | 2023.06.11 |
| 비트 필드가 있는 구조물의 크기는 어떻게 결정/측정됩니까? (0) | 2023.06.11 |