>>873
こういうのはどうよ、とRuby初心者が提案してみるテスト。
def overload(args, pattern)
 if pattern.kind_of? Integer
  return if args.length != pattern
 elsif pattern.kind_of? Array
  return if args.length != pattern.length
  pattern.each_index do |i|
   return if !args[i].kind_of? pattern[i]
  end
 else
  raise ArgumentError, "pattern = Integer | Array"
 end
 yield *args
end

def hoge(*args)
 overload args, [Integer, Integer] do |x,y|
  return x + y
 end
 overload args, [String, String] do |x,y|
  return x.to_i + y.to_i
 end
 overload args, 3 do |x,y,z|
  return x + y + z
 end
end