[SML 7579] Duration
AOKI Atsushi
atsushi @ cc.kyoto-su.ac.jp
2009年 6月 29日 (月) 13:42:59 JST
青木@京都上賀茂です。
次期バージョンである VisualWorks 7.7 から、Duration というオ
ブジェクトが具備されます。Magnitude のサブクラスで、比較演算
や算術演算などができます。
Object
| Magnitude
| | Duration
Duration には totalNanoseconds というインスタンス変数が1つあ
ります。ナノ秒ですから、かなり先を見越した造りになっています。
どんなふうに用いるのでしょう。典型的な例を幾つかあげてみます。
123.45 seconds
==> 2 minutes 3.449996939 seconds
123.45d seconds
==> 2 minutes 3.45 seconds
123.45s seconds
==> 2 minutes 3.45 seconds
123450 milliseconds
==> 2 minutes 3.45 seconds
123450000 microseconds
==> 2 minutes 3.45 seconds
2 days + 3 minutes + 123 seconds + 456789 microseconds - 2 hours
==> 1 days 22 hours 5 minutes 3.456789 seconds
ご覧のように、数が Duration のインスタンスを生成する単項メッ
セージに応答できるのです。
もう少し例をあげましょう。皆さんは、あるプログラムの走行時間
を計測するのに、以下のようにしていたと思います。
Time microsecondsToRun: [1000 factorial]
==> 4018
次期バージョンからは、下記のように書くことができます。
(Time microsecondsToRun: [1000 factorial]) microseconds
==> 4.054 milliseconds
もっと簡潔に、次のように書き下ろしてもいいでしょう。
[1000 factorial] timeToRun
==> 3.998 milliseconds
また、Delay との相性も良く、今まで次のように書いていたのを、
(Delay forSeconds: 3.45) wait
これからは以下のように書いてゆくことになると思います。
3.45 seconds asDelay wait
評価系のメッセージも、これからいろいろ作れそうで、面白そう。
3 milliseconds
toFinish: [1000 factorial]
orElse:
[^Transcript
cr;
show: 'give up'].
^Transcript
cr;
show: 'okay'
さて、さて、皆さん、Duration の適切な日本語訳は何でしょうか?
------------------------------------------------------------
AOKI Atsushi http://www.cc.kyoto-su.ac.jp/~atsushi/
SML メーリングリストの案内