November 2012
Intermediate to advanced
888 pages
54h 46m
Polish
Chcemy sprawdzić, czy dany obiekt przydatny jest do określonych zastosowań.
Jeśli chcesz wywoływać określoną metodę w stosunku do obiektu, sprawdź, czy obiekt na to wywołanie odpowiada:
def send_as_package(obj)
if obj.respond_to? :package
packaged = obj.package
else
if $DEBUG
$stderr.puts "Nie wiem, jak spakować klasę #{obj.class}."
$stderr.puts 'Spróbuj użyć rodzimego packagera.'
end
package = Package.new(obj)
end
send(package)
end
Jeśli natomiast obiekt musi być obiektem określonej klasy lub wykorzystywać musi kod określonego modułu, użyj predykatu is_a?:
def multiply_precisely(a, b) if a.is_a? Float or b.is_a? Float raise ArgumentError, "Nie da się precyzyjnie pomnożyć ...