Интересно, нужно ли проверить это, аргументы, переданные методу, имеют определенный класс.
например.
def type(hash = {}, array = [])
# validate before
raise "first argument needs to be a hash" unless hash.class == Hash
raise "second argument needs to be an array" unless array.class == Array
# actual code
end
Действительно ли умно сделать это, или это является просто громоздким и пустая трата времени для проверки, все передали в аргументах?
Есть ли обстоятельства, когда требуется иметь эту дополнительную безопасность и обстоятельства, когда Вы не обеспокоитесь?
Совместно используйте свои события!