パターンマッチによるメソッド定義@Ruby

より

multiというライブラリで

 class Example
    def initialize()
      multi(:method2, 0)       { 0 }
      multi(:method2, Integer) {|x| @a + x }
    end

    def method1(x)
      return 0 if x == 0
      return @a + x
    end
  end

というようにメソッドmethod2を定義できようにする方法が解説されている。

みそはmultiの第二引数以降であるパターンを実際にどのようにマッチさせるかだろうか。