I am not experienced in Ruby, so my code feels "ugly" and not idiomatic:
def logged_in?
!user.nil?
end
I'd rather have something like
def logged_in?
user.not_nil?
end
But cannot find such a method that opposites nil?
I am not experienced in Ruby, so my code feels "ugly" and not idiomatic:
def logged_in?
!user.nil?
end
I'd rather have something like
def logged_in?
user.not_nil?
end
But cannot find such a method that opposites nil?
May I offer the Ruby-esque ! method on the result from the nil? method.
def logged_in?
user.nil?.!
end
So esoteric that RubyMine IDE will flag it as an error. ;-)
I arrived at this question looking for an object method, so that I could use the Symbol#to_proc shorthand instead of a block; I find arr.find(&:not_nil?) somewhat more readable than arr.find { |e| !e.nil? }.
The method I found is Object#itself. In my usage, I wanted to find the value in a hash for the key name, where in some cases that key was accidentally capitalized as Name. That one-liner is as follows:
# Extract values for several possible keys
# and find the first non-nil one
["Name", "name"].map { |k| my_hash[k] }.find(&:itself)
As noted in other answers, this will fail spectacularly in cases where you are testing a boolean.