Ruby NOT Keyword
last modified April 27, 2025
This tutorial explains how to use Ruby's not keyword for logical
negation. The not operator reverses boolean values in expressions.
The not keyword is a logical operator that returns the opposite of
its operand. It has lower precedence than ! but is more readable.
not works with truthy and falsey values in Ruby. It converts its
operand to boolean before negation. Parentheses are often needed for clarity.
Basic NOT Example
This simple example shows the fundamental behavior of the not
operator. It reverses boolean values.
flag = true puts not(flag) # Outputs false flag = false puts not(flag) # Outputs true
The not operator returns false when given
true and vice versa. Parentheses make the expression clearer.
NOT with Truthy Values
Ruby considers many values truthy besides true. The
not operator handles these consistently.
puts not("hello") # false
puts not(42) # false
puts not([]) # false
puts not(nil) # true
puts not(false) # true
Only nil and false evaluate as falsey in Ruby.
All other values become true when converted to boolean.
NOT in Conditional Statements
The not operator is commonly used in conditional expressions.
This example shows it controlling program flow.
logged_in = false if not logged_in puts "Please log in" else puts "Welcome back" end
The condition checks if the user is not logged in. The
not makes the logic more readable than ! in this case.
NOT with Comparison Operators
Combining not with comparison operators requires parentheses.
This example demonstrates proper syntax.
age = 17 if not (age >= 18) puts "You're not old enough" end
Without parentheses, Ruby would parse this differently due to operator
precedence. The not applies to the entire comparison.
NOT vs. Bang Operator
This example contrasts not with ! to show their
differences in precedence and behavior.
x = true y = false puts !x && y # false (&& evaluated first) puts not(x && y) # true (not evaluated first)
The ! has higher precedence than &&, while
not has lower precedence. This affects evaluation order.
NOT in Method Definitions
Methods can return negated results using not. This example shows
a validation method.
def invalid_email?(email)
not (email.include?('@') && email.end_with?('.com'))
end
puts invalid_email?('test@example.com') # false
puts invalid_email?('bad_email') # true
The method returns true for invalid emails. The not
clearly expresses the inverse of valid email criteria.
NOT with Nil Checks
The not operator works well for nil checks, providing readable
code. This example demonstrates nil handling.
user = nil
if not user
puts "User not found"
end
# Alternative with safe navigation
user&.name || puts("User not found")
The not operator cleanly checks for nil or false values. The safe
navigation operator provides an alternative approach.
Source
This tutorial covered Ruby's not keyword with practical examples
showing boolean negation, conditionals, and comparisons.
Author
List all Ruby tutorials.