Exceptions and Safety
Safe Navigation
Safe navigation calls a method only when the receiver is not nil.
Safe Navigation
safe_navigation.rb
user_key =
users = {
ada: { name: "Ada", email: "ada@example.com" },
grace: { name: "Grace", email: nil }
}
user = users[user_key]
email = user&.dig(:email) || "no email"
name = user&.dig(:name) || "unknown"
puts "key=#{user_key}"
puts "name=#{name}"
puts "email=#{email}"
user_key =
users = {
ada: { name: "Ada", email: "ada@example.com" },
grace: { name: "Grace", email: nil }
}
user = users[user_key]
email = user&.dig(:email) || "no email"
name = user&.dig(:name) || "unknown"
puts "key=#{user_key}"
puts "name=#{name}"
puts "email=#{email}"
user_key =
users = {
ada: { name: "Ada", email: "ada@example.com" },
grace: { name: "Grace", email: nil }
}
user = users[user_key]
email = user&.dig(:email) || "no email"
name = user&.dig(:name) || "unknown"
puts "key=#{user_key}"
puts "name=#{name}"
puts "email=#{email}"
safe navigation
The `&.` operator returns `nil` instead of calling a method on `nil`.