Symbols, nil, Booleans and Truthiness
7.1 Symbols
Use symbols for identifiers, keys, and options. Use strings for text data.
:name # an immutable, interned identifier
:name.object_id == :name.object_id # true (same object every time)
"name".to_sym; :name.to_s
%i[a b c] # [:a, :b, :c]
{ name: "Ana" } # symbols as hash keys (most common use)
:upcase.to_proc.call("hi") # "HI" (enables &:upcase)7.2 nil
nil.class # NilClass
nil.to_s # ""
nil.to_a # []
nil.to_i # 0
value.nil?
user&.name # safe navigation: nil if user is nil
name = input || "default"7.3 Truthiness
Only false and nil are falsy. Everything else is truthy, including 0, "", and [] (unlike Python/JS).
puts "truthy" if 0 # prints!
puts "truthy" if "" # prints!
puts "empty" if [].empty?
!!value # convert to a boolean