プログラミング言語を整える
中級Lua を整える。
= 1始まりの添字と多値返却——Lua 5.4 をブラウザ内で動かして覚える練習場
サンプルコード(クリックでエディタに挿入)
OUTPUT
Lua コードを書いて「実行」を押すと、ここに print 出力が出ます。
使い方
6 ステップで Lua の骨格をつかむ。
- 1
Hello World — print で出力する
print("Hello")が Lua の一番の基本。 - 2
変数と型 — local で宣言する
localを付けないとグローバル変数になってしまう点に注意。型は number / string / boolean / nil の動的型。 - 3
テーブル — 配列も辞書もこれ1つ
Lua には配列型・辞書型が別々にはない。
{ }で作るテーブルが両方を兼ねる。添字は1始まり。 - 4
for / while — 繰り返し
数値 for・
ipairsによる配列走査・while の3種類。 - 5
関数 — 複数の値を同時に返せる
functionで定義。return a, bのように多値返却ができるのが特徴。 - 6
メタテーブル — クラス風の設計図
Lua に
class構文は無い。__indexを使ったメタテーブルでオブジェクト指向っぽく組む。
💡 io / os はこの練習場では使えません(ファイル・OS 操作は送信ゼロの原則から外れるため)。
無限ループを書いても既定 3 秒で自動的に停止します。
書いたコードと実行結果は、どこにも送信されません(すべてブラウザ内で実行)。
🌐 ただし1点だけ補足します。このページを開いただけでは外部通信は発生しませんが、
「実行」を押した最初の1回だけ、Lua の実行環境(wasmoon 1.16.0・Lua 5.4)を配信元の
cdn.jsdelivr.net から取得します(約0.3MB)。
これはプログラムを受け取るだけの通信で、あなたが書いたコードや実行結果が送られることはありません。
ただし通信である以上、配信元にはお使いの回線の IP アドレスが見えます。
「入力は端末から出さない」という当サイトの原則に関わる点なので、隠さずに書いておきます。
このツールについて
Lua はテーブル1つで配列も辞書も表す、軽量で組み込みやすい言語。ブラウザ内で Lua が動くので、書いて → 実行 → print 出力と戻り値を安全に何度でも試せます。
ブラウザ内 Lua 5.4(wasmoon) で Hello World → 変数 → テーブル → 繰り返し → 関数 → メタテーブル を試せる Playground。1始まりの添字・多値返却など Lua らしい癖も体験できます。
主な機能
- 7サンプル(テーブル・多値返却・メタテーブルのクラス風表現を含む)
- Web Worker 実行で無限ループは3秒で自動停止
- 戻り値(最後の return)と print 出力を分けて表示
- CodeMirror 6 シンタックスハイライト・Ctrl/⌘+Enter で実行
- 処理系は cdn.jsdelivr.net から初回のみ約0.3MB・以降はキャッシュ
- io・os は使えない練習用環境・送信ゼロ
よくある質問
Q. Lua のコードはどこで実行されますか?外部に送信されますか?
A. すべてブラウザ内で Lua 5.4(wasmoon・WASM)が実行します。書いたコードも実行結果もどこにも送信されません。最初の1回だけ、実行環境(約0.3MB)を cdn.jsdelivr.net から取得します。
Q. 無限ループを書いたらどうなりますか?
A. Web Worker の中で実行しているため、3秒を超えると自動的に停止し、画面が固まることはありません。次の実行では実行環境を作り直します。
Q. local を付け忘れるとどうなりますか?
A. Lua では既定でグローバル変数になります。サンプル「変数と型」のとおり、local を付けるのが基本です。
Q. 配列の添字が思った値と違うのですが?
A. Lua のテーブル(配列)は 0 ではなく 1 始まりです。「Lua らしい1本」のサンプルで確認できます。
Q. io.open や os.execute は使えますか?
A. 使えません。ファイル操作や OS 操作は、この練習場では呼び出さない運用です(送信ゼロの原則)。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。