そういうわけでコンソール風アプリケーション作った。
http://ux.getuploader.com/euremo/download/7/rubier...
できるだけコードらしいものを書かなくてもいいように、ということを意識して、erabasicのユーザー関数定義部に相当する部分は
#関数名 = sub do で関数定義開始 Subhoge = sub do #ここに処理内容 #printの引数には引用符が必要 printw "あいうえお" #endで関数定義終了 end
という書き方で書けるようにした。
呼ぶときは
call Subhoge
のように呼べる。今のところ戻り値も引数も対応していない。subについては戻り値を返さず、戻り値を返すものはfunctionで定義するようにしようと考えている。なんかVBみたいであれだけど。
まだprint、printl、printw、wait、callしか実装してないので、それだけしかできないが、文章を表示して入力待ちをする、という程度のことは実装できている。
Rubyは基本的にはあんまり記号を使わないで書ける言語なので、erabasicからの移行はそんなに大変じゃないんじゃないかと思うが、新しい言語、新しい環境に移るというのはやっぱり楽ではないわけで、ERBのコンバータを用意したりとかそういうのも必要になるだろう。
が、まあとりあえずそれなりに使えるものができたらためしに何か移植してみてもいいかもしれない。
それにしてもRubyってすさまじいなーと思うのは、今回のメインのソースコードがたった200行で済んでいるというところ。コンソール部分に関しては100行もない。未実装の部分も多いし、大半はライブラリ任せだというのもあるけど、それにしたってコンパクトなものだ。euremoはモチベーションが持続しない性質なのでよく間が空いたりするのだが、コード量が少なければ間が空いても把握しなおすのがそれほど大変じゃなくて済むので、Rubyのそういうところをとても気に入っている。
追記
できてると思ったらできてなかった。遅延評価してくれると思ったらそうなっていない。まあぼちぼち直すかな……。
追記2
いやいやいや。遅延評価もクソもなかった。めっちょしょぼいミスだった。単にクラス変数のスコープを間違えてただけだった。そりゃ共有したら上書きされるわけで、クラスごとにクラス変数を定義しないとだめだよなあ。そういうことなので直したやつをアップしなおした。やれやれ。
コメントをかく