class Object
Public Instance Methods
Invokes the method identified by the symbol method
, passing it any arguments and/or the block specified, just like the regular Ruby Object#send
does.
Unlike that method however, a NoMethodError
exception will not be raised and nil
will be returned instead, if the receiving object is a nil
object or NilClass
.
If try is called without a method to call, it will yield any given block with the object.
Please also note that try
is defined on Object
, therefore it won’t work with subclasses of BasicObject
. For example, using try with SimpleDelegator
will delegate try
to target instead of calling it on delegator itself.
Examples¶ ↑
Without try
@person && @person.name
or
@person ? @person.name : nil
With try
@person.try(:name)
try
also accepts arguments and/or a block, for the method it is trying
Person.try(:find, 1) @people.try(:collect) {|p| p.name}
Without a method argument try will yield to the block unless the receiver is nil.
@person.try { |p| "#{p.first_name} #{p.last_name}" }
# File lib/pedump/core_ext/try.rb, line 32 def try(*a, &b) if a.empty? && block_given? yield self else __send__(*a, &b) end end