shizuto on languages

言語好きの組込みプログラマが言語から言語じゃないものまで語ります。On y va!

メタプログラミングRuby読書会@尼崎 2回目

メタプログラミングRuby読書会でした。読書会としては2章分進んだんですが、僕の進行ぐらいは1章分でした。またKindleで読み進めようかな。だんだん「メタプログラミングって意外とたいそうなものじゃなさそうだ」という感覚になってきました。

挙動を選ぶまで、メソッドを呼ばせないとか。

class MyClass
  def define_method_to_say_hello
    def say
      puts 'Hello, world!'
    end
  end

  def define_method_to_say_bonjour
    def say
      puts 'Bonjour, le monde!'
    end
  end
end

a = MyClass.new
a.say #=> Error
a.define_method_to_say_hello
a.say #=> Hello, world!

なんとなくmodulo 5にするとか。

class Fixnum
  alias :plus :+
  alias :minus :-

  def +(x)
    self.plus(x) % 5
  end

  def -(x)
    self.minus(x) % 5
  end
end

1+2 #=> 3
3+3 #=> 1

きっと、慣れるといろんなことが自然に見えてくるんだろうな。