programing

루비의 "and"와 &&의 차이점은 무엇입니까?

iphone6s 2023. 6. 11. 10:25
반응형

루비의 "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

반응형