"|="는 무슨 뜻인가?(파이프 이퀄 오퍼레이터)
구글 검색과 스택 오버플로우를 이용해 검색해봤지만 결과가 나오지 않았다.opensource 라이브러리 코드에서 확인했음:
Notification notification = new Notification(icon, tickerText, when);
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
"|="()이란 무엇인가?pipe equal operator
)는 의미?
|=
와 같은 방법으로 읽다+=
.
notification.defaults |= Notification.DEFAULT_SOUND;
와 같다
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
어디에|
비트-와이즈 OR 연산자.
모든 연산자는 여기에서 참조된다.
비트-와이즈 연산자를 사용하는 이유는 그러한 상수가 int에서 플래그를 전달할 수 있기 때문이다.
이 상수들을 보면 두 개의 힘이 있다는 것을 알 수 있을 것이다.
public static final int DEFAULT_SOUND = 1;
public static final int DEFAULT_VIBRATE = 2; // is the same than 1<<1 or 10 in binary
public static final int DEFAULT_LIGHTS = 4; // is the same than 1<<2 or 100 in binary
따라서 비트-와이즈 OR을 사용하여 플래그를 추가할 수 있음
int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // same as 001 | 010, producing 011
그렇게
myFlags |= DEFAULT_LIGHTS;
단순히 깃발을 다는 것을 의미한다.
그리고 대칭적으로, 우리는 깃발이&
:
boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;
너는 이미 너의 질문에 대한 충분한 답을 가지고 있다.하지만 아마 내가 너에게 더 도움이 될거야.|=
이항 연산자의 종류.
비트 연산자를 위한 표를 작성하는 중:
다음은 유효하다.
----------------------------------------------------------------------------------------
Operator Description Example
----------------------------------------------------------------------------------------
|= bitwise inclusive OR and assignment operator C |= 2 is same as C = C | 2
^= bitwise exclusive OR and assignment operator C ^= 2 is same as C = C ^ 2
&= Bitwise AND assignment operator C &= 2 is same as C = C & 2
<<= Left shift AND assignment operator C <<= 2 is same as C = C << 2
>>= Right shift AND assignment operator C >>= 2 is same as C = C >> 2
----------------------------------------------------------------------------------------
모든 연산자는 이항 연산자임을 주지한다.
또한 참고:
>>>
Java에서 Unsigned shift라고 하는 비트 연산자
그렇지만>>>>= 연산자>>>=
자바에서는 운영자가 아니다.~
비트보충 비트,0 to 1 and 1 to 0
(단일 연산자) 그러나~=
조작자가 아니다.또한.
!
논리적 NOT 연산자(Logical NOT Operator)로 호출되었지만!=
두 피연산자의 값이 동일한지 여부를 확인하고, 값이 같지 않으면 조건이 참이 된다.(A != B) is true
로서.A=!B
라는 뜻이다.B
이다true
그때A
되다false
(그리고 만약B
이다false
그때A
되다true
).
측면 참고: 파이프라고 하는 것이 아니라 OR이라고 하는 대신, 파이프는 셸 용어로서 한 프로세스를 다음으로 이동시킨다.
나는 무엇에 대한 답을 찾고 있었다.|=
그루비에서는 그렇다. 위의 답변이 옳다고 해도 내가 보고 있던 특정 코드를 이해하는데 도움이 되지 않았다.
특히, 부울 변수 "|="에 적용하면 오른쪽에서 처음으로 투덜거리는 표현식과 마주칠 때 TRUE로 설정되며, 이후의 모든 통화에 대해 TRUE 값을 유지할 것이다.빗장처럼.
여기에 간략한 예가 있다.
groovy> boolean result
groovy> //------------
groovy> println result //<-- False by default
groovy> println result |= false
groovy> println result |= true //<-- set to True and latched on to it
groovy> println result |= false
출력:
false
false
true
true
편집: 이 기능이 유용한 이유는?
다양한 개체에서 변경된 내용이 있는지 확인하고, 변경된 내용이 있으면 일부에 알리려는 상황을 고려해 보십시오.그래서, 당신은 어떤 것을hasChanges
부울하고 로 설정하다.|= diff (a,b)
그 다음에|= dif(b,c)
예가 있다 여기 간단한 예가 있다.
groovy> boolean hasChanges, a, b, c, d
groovy> diff = {x,y -> x!=y}
groovy> hasChanges |= diff(a,b)
groovy> hasChanges |= diff(b,c)
groovy> hasChanges |= diff(true,false)
groovy> hasChanges |= diff(c,d)
groovy> hasChanges
Result: true
이것의 줄임말이다.
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
그리고|
약간 현명하게 수술하는 거야
|
비트-오어 연산자(bitwise or operator)이며, 다음과 같이 적용되고 있다.+=
.
주: ||= 존재하지 않는다.(논리적 또는) 사용할 수 있다.
y= y || expr; // expr is NOT evaluated if y==true
또는
y = expr ? true : y; // expr is always evaluated.
참조URL: https://stackoverflow.com/questions/14295469/what-does-mean-pipe-equal-operator
'programing' 카테고리의 다른 글
파일 설명자와 파일 포인터의 차이점은? (0) | 2022.05.16 |
---|---|
vuejs의 json 개체에서 중첩된 키를 찾는 방법 (0) | 2022.05.16 |
스프링 부트 - 예외를 포함한 모든 요청 및 응답을 한 곳에 기록하는 방법 (0) | 2022.05.16 |
파이프 문자("|")로 문자열 분할 (0) | 2022.05.16 |
Vuejs 렌더링 기능 내에서 슬롯을 복제하는 방법 (0) | 2022.05.16 |