Перегрузка в Ruby

Я хочу использовать функцию перегрузки в Ruby, как и во многих других языках, но сам Ruby не поддерживает эту функцию.

Должен ли я реализовать его, используя способ определения метода с аргументом *argsи определения количества и типов аргументов внутри метода? Некоторым нравится:

class A
    def foo(*args)
        case (args.length)
        when 1
            do something
        when 2
            do something-else
       ....
        end
    end
end

Вы можете видеть, что это действительно уродливо, чем прямая перегрузка.

Я хочу знать, есть ли какие-либо ключевые слова или какие-то другие способы (, такие как метапрограммный -программный модуль ), которые могли бы позволить мне определить метод перегрузки более элегантным способом.

10
задан Shou Ya 10 July 2014 в 10:00
поделиться