Hatena::ブログ(Diary)

らいとなひび RSSフィード

2009-07-25

[]Ruby勉強会@関西#35に参加してきました。 03:01

ohaiさんのRuby/SDLメンテナンス期間が素晴らしく長い件。

新バージョンから、それまでGC頼りだったリソースの解放が明示的にできるようになった、ということが語られていました。すごい。

ただ、何故かチャットではGCの方が話題になり、それってザ・ワールドだよね、ということで作ってみました。

module Kernel
  def The(proc)
    proc.call
  end
  
  def World()
    Proc.new{ GC.start }
  end
end
The World   #=> NameError: uninitialized constant World
The World() #=> nil (OK)

カッコがださいので、world を使うという逃げ方もできるわけですが、破壊的なメソッドには、! を使うというローカルルールがありますので、こう書くことになりました。

# 差分のみ
module Kernel
  def World!
    Proc.new{ GC.start }
  end
end
The World!  #=> nil (OK)

使い途?そんなものはありません。GC.start を使いましょう。

SixeightSixeight 2009/07/27 12:35 def Object.const_missing(name)
return lambda { GC.start } if name == :World
super
end

こうですか?わかりません><

raito3raito3 2009/07/28 22:44 Sixeightさん
こんにちは。そうそうそんな感じ。(^^;
そうか、const_missingの中でsuperすると、影響範囲が小さくなるんですね。勉強になります。

トラックバック - http://d.hatena.ne.jp/raito3/20090725/1248544911