example ruby boolean-logic

ruby - example - Diferencia entre `not` y`! `En rubí



ruby grape example (2)

Recuerdo haber leído en alguna parte que not y ! se evalúan de manera diferente, y no puedo encontrarlo en la documentación. ¿Son sinónimos?


Son casi sinónimos, pero no del todo. ¡La diferencia es eso ! tiene una mayor precedencia que not , al igual que && y || son de mayor prioridad que and y or .

! tiene la mayor prioridad de todos los operadores, y not uno de los más bajos, puede encontrar la tabla completa en los documentos de Ruby .

Como ejemplo, considere:

!true && false => false not true && false => true

En el primer ejemplo ! tiene la mayor prioridad, por lo que efectivamente está diciendo false && false .
En el segundo ejemplo, not tiene una precedencia más baja que true && false , por lo que esto "cambió" lo false de true && false a true .

¡La pauta general parece ser que debes seguir ! , a menos que tenga una razón específica para usar not . ! en Ruby se comporta igual que la mayoría de los otros idiomas, y es "menos sorprendente" que not .


Una manera fácil de entender al operador not es mirando not true && false como equivalente a !(true && false)