サイログ。

~雑多な記事置き場~

遅延評価はやっぱり欲しい

作者のまつもとさんの日記で、Rubyの遅延評価のことを呼んだ覚えがありますが(確認しろよ(^^;)、Miyakoでのスクリプティングをアレやコレやと考えていたときに「ある箇所」で遅延評価が欲しいなと思ったことがあります。

それは、

目パチ口パク

だったりします。

やっぱり人間、一定時間毎に瞬きするわけはないんですから、目を開いている時間をある程度ランダムにしたいわけです。
しかし、今のSpriteAnimationクラスでは、表示時間を引数で渡すので、インスタンス生成時に既に値は決まっている(引数にrand使っても、引数に渡るときに値の計算が行われるわけで、実際に表示するときは、その値を繰り返し使うことになる)わけです。これをランダムにするには文字列を使わなきゃならない(例えば、

SpriteAnimation.new(@eyes,["(rand(3)+2)/",0.05,0.05,...])

とか。文字列部分はむろんeval)。でもなんかちょっと見栄えが・・・。ある意味危険やし・・・。

遅延評価が実装されると、

SpriteAnimation.new(@eyes,[(rand(3)+2)/10,0.05,0.05,...])

となり、見た目はスッキリです。

Haskellとかではこういうのは標準でできるそうなので、この際Rubyでも・・・(笑)