2018年12月24日

wxLuaApp: コンソールで print なしに値を表示

 GitHub - wxLuaApp の件。立ち上げるとコンソールが出てきて、ここで1行の Lua コードを実行できる。

20181224-1.png

 実は今までいくつか Ruby を組み込んだアプリを開発して、同じような機能を実装していた。Ruby では式と文の区別がないので(注1)、実行した Ruby コードが返した値を表示するようにしていた。ところが、Lua では式と文が区別されている。このため、「式」を実行しようとするとコンパイルエラーになってしまう。

20181224-2.png

 そこで、Lua コードをコンパイルして、コンパイルエラーが出たら return を直前につけて再度コンパイルするようにしてみた。これなら、文は文として、式は return 文として実行される。return 文から戻ってくると値がスタックに残っているので、それを表示すれば「式の値」が表示されたように見える。

20181224-3.png

 コンマで区切った複数の値が返せるのは Lua ならでは、というところですね。

注1:「式と文、評価と実行、そして副作用 ―― プログラムはいかにして動くのか【前編】」郡司啓氏、Rubyist Magazine 0039号

 Lua/LuaJIT は、思いついたことをすぐに試せる手軽さがいい。Love2D (LÖVE) も LuaJIT が記述言語です。うちの坊(中学2年)が Love2D で RPG 風ゲームのコーディングをやっておりますが、始めて半年ぐらいで、かなり自由に自分のアイデアを試せる段階まで来ました。「Scratch の経験はあるけど、テキストベースのプログラミングは初めて」という人には、格好のプログラミング環境じゃないかと思う。難易度は BASIC とそんなに変わらないし、BASIC よりも現代主流の言語につながりやすいと思う。もっと流行ってほしいな。

Twitter で #love2d_jp というハッシュタグがあるようですが、私は Twitter やってないので…

Posted at 2018年12月24日 23:32:41
email.png