3

|| ("또는") 또는 && ("및") 2 진수 연산자를 다시 정의하는 방법에 대한 내 참조를 잃고 있습니다. 나는 어딘가 처음으로해야만하는 것을 읽었다. importall Base. 그럼 난Julia에서 이진 연산자를 어떻게 오버로드/재정의합니까?

Base.||(x::MyType, y::MyType) = dosomething(x, y) 

또한

Base.or(x::MyType, y::MyType) = dosomething(x, y) 

을 시도하지만이 중 어느 것도 작동하지 않습니다. 누군가가이 작업을 수행하는 방법에 대한 기본 사항을 설명하는 참조를 줄 수 있다면 감사하겠습니다 ... "Julia에서 이진 연산자 재정의"와 같은 쿼리를 찾을 수 없습니다 ...

답변

4

& & 및 || 단락 회로 동작이므로 기능과 별도로 특수한 구조를 추가하지 않고 과부하가 걸리지 않습니다. 함수를 호출하려면 모든 인수를 평가해야하며 이는 단락 회로 평가가 아닙니다.

&을 오버로드하고 | 대신 예제 사용 사례 없이는 알기가 어렵습니다.

+0

나는 알고 있습니다. 그건 의미가 있습니다. 나는 대신'|'을 오버로딩하는 것이 좋다. 나의 유스 케이스는 '|' 세트의 경우 집합 노조를 수행하십시오. 운영자가 더 이상 사용되지 않는 것 같습니다 (이유는 무엇입니까?). 그래서 어떤 경우 든, 'Base. | (x, y) = compute_bitwise_or (x, y)'구문은 비 단락 회로 연산자에서 작동하는 것으로 보입니다. 'Base ||| '를 정의하려고 할 때 주어진 오류에 대해보다 구체적으로 설명 할 수 있습니까? 예를 들어'||'의 특수한 단락 문자를 언급 할 수 있습니까? 이 문제를 해결해야합니까? – Mateo