@kyanny's blog

My thoughts, my life. Views/opinions are my own.

ちょっとしたモジュールをつくっている

Pythonコマンドラインライクに電卓できるスクリプトを書き始めて、せっかくだから俺様の今の能力限界まで頑張ってオブジェクト指向してみたらどうだろうと思ってやってみた。で、Pythonでは _ (アンダースコア) で前回の計算結果を参照できるらしく、「そういうことこそクロージャを使えばいいのではっ!?」と思い立ち、そこ以外の部分をざざっと書いた。

問題点があって、

  • "3g"とか入力するとなんかエラーがでる。eval qq()で簡単に実行してるだけなので、なんか予想外のことをやろうとしてエラってるのだろう。直したいんだけど。
  • それに絡んで、eval {}とeval qq()の差がわかんねー。{}だとエラーをトラップできるとか書いてあったのでそのほうがいいんだけど、これだと 1+1 とかがそのまま計算されずに出てきちゃうんだよね。ブロックの中の式は $statement; == 1+1;なんだから当たり前だと思ってeval{ eval qq($statement); };とかやっても意味無し。ううむ。
  • クロージャのことを考え始めたら頭がごちゃごちゃになってきてしまったので肝心の部分がまだできていない。

ていうかこれ絶対世界中で2000人くらいがすでにチャレンジして実装してCPAN探せばきっと類似のものが4つ5つ見つかるって!でも、俺にしてはいいセンいってると思うので気になる問題だけ片付けて是非とも公開したい!いや公開はべつにいいから計算をもっと楽ちんにやりたい!

違った。そうじゃなくて最大の問題は、計算ごとにnewするんじゃなくて最初にnewしといて前回の計算結果もプロパティに持てば解決じゃん?という意見がチラついてしまったのでクロージャを使うのはむしろエレガントでなくて無駄だってことだ・・・。