K.Sasada's Home Page

Diary - 2013 September

研究日記

長月

_29(Sun)

RubyistたちのDRY症候群との戦い Rubyで自動的にインスタンス変数をセットする を見て、Method#parameters と Module#prepend でそれをやるサンプル。

class Module
  def auto_init *vars
    m = self.instance_method(:initialize)

    mod = Module.new do
      define_method(:initialize) do |*args|
        m.parameters.each_with_index{|(_, name), i|
          if vars.include? name
            instance_variable_set(:"@#{name}", args[i])
          end
        }
        super(*args)
      end
    end
    self.prepend mod
  end
end

class Foo
  attr_reader :x, :y
  def initialize x, y, z; end
  auto_init :x, :y
end

foo = Foo.new(1, 2, 3)
p [foo.x, foo.y]

:x, :y が並んでいるのが DRY じゃないけど、attr_reader をなんかうまくすれば、1セットは削れます。

_21(Sat)

http://regional.rubykaigi.org/tochigi05 で "Ruby 2.1 のすべて" というタイトルで発表させてもらいました。

資料はこちら:http://www.atdot.net/~ko1/activities/toruby05-ko1.pdf

_19(Thu)

本日、鳥井雪さんと結婚しました。

今後とも、ご指導ご鞭撻のほどお願い申し上げます。


役所での出来事。

  • 審査に 30 分ほど待ってくれと言われる。
  • 登録が終わったのでここに署名しろと言われる。そして、もう手続きは終わりと言われる。
  • 帰りの電車の中で「審査が終わった」という電話を受ける。あれ、さっきので終わりじゃなかったの!?
_a_matsuda(Fri Sep 20 00:43:49 +0900 2013)

 めでたい!

_sorah(Sat Sep 21 02:55:03 +0900 2013)

 おめでとうございます!

_maya(Sat Sep 21 21:21:15 +0900 2013)

 おおーなんと、おめでとうございます。

Sasada Koichi / ko1 at atdot dot net
$Date: 2003/04/28 10:27:51 $