나는 이것이 의미하는 알거나무엇이 다른가요? 대 ||
true || false
=> true
그러나 다른 날 실수로 대신 하나의 수직선을 사용하고 내 코드는 여전히 일 것을 발견했다.
true | false
=> true
false | false
=> false
그래서 이러한 차이점은 무엇입니까? 및 || 그들은 동등한가?
나는 이것이 의미하는 알거나무엇이 다른가요? 대 ||
true || false
=> true
그러나 다른 날 실수로 대신 하나의 수직선을 사용하고 내 코드는 여전히 일 것을 발견했다.
true | false
=> true
false | false
=> false
그래서 이러한 차이점은 무엇입니까? 및 || 그들은 동등한가?
| 비트 OR 연산자입니다. || 논리 OR 연산자입니다.
두 연산자에 대한 설명은 여기를 참조하십시오. http://www.tutorialspoint.com/ruby/ruby_operators.htm.
|
은 비트 단위 OR 연산자입니다. ||
은 논리적 OR입니다.
가장 큰 차이점은 시연 한대로 사용하면 ||
은 누전되어 왼쪽 측면이 맞을 때 오른편을 평가하지 않는다는 것입니다. |
을 사용하면 항상 양쪽을 평가합니다.
이 경우에는 그다지 중요하지 않지만 연산자의 양측이 계산하는 데 비용이 많이 든다면 ||
이 더 효율적입니다.
논리적 테스트 (예 : "if")를 수행 할 때 ||
을 사용하는 것이 거의 항상 좋은데, 이는 사용자의 의도를보다 명확하게 표현하고 잠재적으로 더 효율적이기 때문입니다.
|
연산자는 비트 조작을 직접 수행 할 때 더 유용하며 실제로는 일반적으로 일반적으로 해당 시나리오에만 적합합니다.
||
은 논리 OR 연산자입니다.
a | b
는 a.|(b)
같다. 따라서 의미는 a
클래스에 따라 다릅니다.
첫 번째 피연산자가 Fixnum
: Fixnum#|
이면 비트 단위로 OR 연산을 수행합니다.
논리 OR 제 피연산자 true
또는 false
인 경우 TrueClass#|
, FalseClass#|
; ||
, |
두 피연산자가 모두 true
/false
인 경우 동일한 결과가 나타납니다.
NilClass#|
...
다른 차이점 : ||
단락 |
하지 않지만.예를 들어
:
def f1
p 'f1 called'
true
end
def f2
p 'f2 called'
true
end
p(f1 || f2)
# => "f1 called"
# true
p(f1 | f2)
# => "f1 called"
# "f2 called"
# true
1 || 2 # return first non-false/nil value.
# => 1
nil || 1
# => 1
1 | 2 # 0b01 | 0b10 => 0b11 = 3
# => 3
>> nil | 1
# => true
1 | nil
# => TypeError: nil can't be coerced into Fixnum
# from (irb):7:in `|'
# from (irb):7
# from C:/Ruby200-x64/bin/irb:12:in `<main>'
가 올바른지 그런 말을하는 것입니다 | |의 모든 기능을 포함합니다. 게다가 비트도 처리 할 수 있습니까? – User314159
@ User314159 아니요 - 내 대답을 참조하십시오. –