カッとなって擬似的な連想配列を実装した。連想配列を使いたいシチュエーションはほぼ間違いなく「foreachしながら順にkeyとvalueを取り出して処理」というものなのでそれを実現するためだけの関数@ASSOCを作った。@ASSOCに文字列を渡して連想配列を生成したらあとは@EACH_ASSOCをコールするたびに内部ポインタ位置の値が広域変数AKEYとAVALUEにセットされて、内部ポインタが1ずつ進み、終端に達したら終了という仕組み。
ASSOC("FOO=1;BAR=2;FIZZ=8;BUZZ=32") WHILE EACH_ASSOC() PRINTFORM %AKEY% = {AVALUE}, WEND
みたいにして使える。ただし一度に二個以上の連想配列を使うことはできない。これはまあそのうち参照テーブルの仕組みを作ってなんとかするしかないだろう。参照IDを変数に保持するとか、使い終わったら破棄するとか、やることが増えるのであんまり気は進まないが。
どのみち破棄については考えなきゃいけない。いまはめんどくさいので配列終端に達したら内部変数ともども自動的にリセットされるようにしているが、同じ配列を使いまわしたいというケースはあるだろうからそれはなんとかしたほうがいいだろう。
まともな出来になったら自作モジュールのとこにおいておくか。その前に参照テーブル実装しないといけないか。しかし参照テーブルみたいな仕組みを導入してはたして使いものになるんだろうか。試してみないとなんともいえないが、スクリプト側でやるこっちゃないよなーという気が。
コメントをかく