Pythonでswitch
twitterで"なんでPythonにはswitchがないの?"とぼやいたところ、ハカーの皆さんがPythonでswitchの実装を教えてくれた。それが勉強になったので僭越ながらご紹介。
- Ian Lewisさん、akisutesamaさんより
breakし忘れてひどいバグを作る子がいるから
if
、elif
で。これはごもっとも。っていうかこれしか知らないwww
- MiCHiLUさんより
dictを使う。
{1:lambda x:x, 2:lambda x:x*x, 3:lambda x:x*x*x}.get(4, lambda x:'Infinity')(100)
lambdaを使ってこんなことまでできるとは・・・。hirokinkoさんはjavaでHashMapを使って同じような実装をされているそうです。
- id:moriyoshiさんより
- switchを作っていただきました。
def switch(name, bases, dict):
dict.get(bases[0], lambda:0)()
return type(name, tuple(), dict)
class _('a'):
__metaclass__ = switch
def a():
print 'a'
def b():
print 'b'
こちらに保存させてもらいました。これは使いたいコードすぎです。
勉強になります!皆様ありがとうございます^^
コメント
コメントを投稿