O que é o operador Pipe Equal (=)?
Desenvolvedores que encontraram o operador pipe igual (|=) em código aberto o código da biblioteca pode se perguntar sobre seu significado. Este operador, muitas vezes confundido com uma atribuição lógica, contém uma operação OR bit a bit significativa.
Compreendendo o OR bit a bit
O operador igual à barra vertical |= funciona de forma idêntica a =. No código abaixo, o operador |= combina o valor original dos padrões com a constante DEFAULT_SOUND:
notification.defaults |= Notification.DEFAULT_SOUND;
Esta operação é equivalente a:
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
onde | denota o operador OR bit a bit.
OR bit a bit em máscaras de constante
No exemplo fornecido, as constantes DEFAULT_SOUND, DEFAULT_VIBRATE e DEFAULT_LIGHTS são potências de dois:
DEFAULT_SOUND = 1 DEFAULT_VIBRATE = 2 (1Isso permite o uso de OR bit a bit para adicionar ou remover sinalizadores. Por exemplo:
int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // 001 | 010 = 011Adicionando outro sinalizador:
myFlags |= DEFAULT_LIGHTS;simplesmente anexa um novo sinalizador.
Testando a presença do sinalizador
O operador AND bit a bit (&) testa a presença de um sinalizador:
boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;Se o resultado for diferente de zero, o sinalizador está definido.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3