The “not” keyword gets an expression and inverts its boolean value – so given a true condition it will return false. It works like “!” operator in Ruby, the only difference between “and” keyword and “!” operator is “!” has the highest precedence of all operators, and “not” one of the lowest. Syntax: not expression.
!= Checks if the value of two operands are equal or not, if values are not equal then condition becomes true. (a != b) is true.
As with and , the only difference between or and || is their precedence. Just to make life interesting, and and or have the same precedence, while && has a higher precedence than || .
The difference between && and and and || and or in Ruby is in the order of precedence. Operator && has a higher precedence than and. But this is generally not an issue unless used with operators which are in between these two, like the ternary and assignment operators. Now this might come as a little surprise!
They are almost synonymous, but not quite. The difference is that ! has a higher precedence than not, much like && and || are of higher precedence than and and or.
! has the highest precedence of all operators, and not one of the lowest, you can find the full table at the Ruby docs.
As an example, consider:
!true && false
=> false
not true && false
=> true
In the first example, ! has the highest precedence, so you're effectively saying false && false.
In the second example, not has a lower precedence than true && false, so this "switched" the false from true && false to true.
The general guideline seems to be that you should stick to !, unless you have a specific reason to use not. ! in Ruby behaves the same as most other languages, and is "less surprising" than not.
An easy way to understand the not operator is by looking at not true && false as being equivalent to !(true && false)
I have an RSpec-driven example here: Ruby's not keyword is not not but ! (not)
In essence:
! can be overriden, whereas not cannot be overriden! then not will be overriden too, hence it must be using ! under the hoodIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With