音の鳴るブログ

鳴らないこともある

enzui.js 型システム

一度は不要だと思ったデータ型の導入だけど、結局は実装することにした。と、いうのもデータを受け取る関数が一つで全部がそこに数値か文字列で入ってくるようにしていると、データが伝播するたびにデータ型のチェックと変換する必要があるので非効率なのと、入り口が一つだと条件分岐ばっかりでネストが深い理解不能コードを書くはめになるから。今は集中しているから良いけど、飽き始めた時に出来るだけ嫌にならないようにしておくことも重要だと思った。新しいやり方では、整数なら $int、BANG なら $bang といった具合にデータ型ごとに異なる関数を呼ぶ。基本型は BANG, INT, FLOAT, LIST, SYMBOL で、その他も $set みたいな $ で始まる関数を定義しておけば「set 15」メッセージがきたらそれが呼ばれる。JavaScriptは $ が使えるので便利だ。

クラスの定義は onmsp っていう関数があればMSPオブジェクトとして、信号処理時に呼び出すみたいな感じにした。他にタイマー制御オブジェクト、UIオブジェクトとかがある。きまったインターフェイスを書けばそのように振る舞うし、$hogeで処理出来るメッセージを定義できるので、多分相当書きやすくなっている。あと継承も導入した。

週末にかなり集中してコードを書いたせいか徹夜明けみたいな状態が続いている。