Hatena::ブログ(Diary)

make for h @ppy_things;

2009-06-03(Wed)

"この世で最も役に立たない関数"をRubyのメソッドで

寝つけないところにこのエントリ. defを使う方法でやってみた.

def pointless
  puts "Turing off myself = #{method :pointless}"
  undef :pointless
end

pointless
pointless

Rubyにもundefがあるなんて初めて知ったぜ.

追記: Pythonでも書いてみた

vars = vars()

def pointless():
    print 'Turning off myself = ' + pointless.func_name
    del vars[pointless.func_name]

pointless()
pointless()

んー, うまく__main__モジュールの辞書を取得できないだろうか……

また追記(11:57): Pythonにはglobalなるものがあるらしい.

ブクマコメントなどを見ると, globalな空間を参照できるとのコト. この感じを見てPHPを思い出して, 少し感慨深くなった(個人的な話).

def pointless():
    global pointless
    print 'Turning off myself = ', pointless # func_name使わなくてもコレでいいっぽい
    del pointless

pointless()
pointless()

またひとつ賢くなったよ! 多用すべきものではないと思うけど.