Menu
Coddy logo textTech

要素の追加と読み込み

CoddyのLuaジャーニー「Luau入門」セクションの一部。レッスン 14/73。

Luaのテーブルは、型付き配列でもまったく同じように機能する table.inserttable.remove を使ってすでに拡張や縮小を行っています。違いは、Luauが挿入する内容をチェックするようになった点です。{number} 配列に string をプッシュすると、実行時に混乱したプレイヤーが発見するのではなく、入力中にフラグが立てられます。

local queue: {string} = {"save", "load"}
table.insert(queue, "quit")      -- 末尾に追加
table.insert(queue, 1, "help")   -- 位置1に挿入し、残りをシフト
local last = table.remove(queue) -- 最後の要素を削除して返す

table.remove(t) は last element を取り出して返します。table.remove(t, 1) は first エレメントを removes し、残りをすべて down へシフトします。配列の型が {string} であるため、Luauは返される値が string であることを把握しています。

Reading は通常のLuaと同様に寛容です。何も保持していないインデックス(queue[0]queue[-1]、あるいは #queue を超える位置)は静かに nil と評価されます。エラーは発生しないため、存在するかどうか確実でない値を使用する前には nil の check を行ってください。

もう一つの便利なツール:table.freeze(t) はテーブルを実行時に読み取り専用にします。その後に変更しようとするとエラーが発生します。これは作成後に決して変更してはならない定数データ(設定や固定レベルリストなど)に対するLuauの解決策です。

challenge icon

チャレンジ

簡単

"save""load" で初期化した型付き配列 queue: {string} を作成します。その後:

  1. table.insert を使って "<code>quit" を append します
  2. 位置 1 に "<code>help" を insert します
  3. table.remove を使って last コマンドを remove し、返された値を保存します

最後に、それぞれを改行して print します:

  1. removed コマンド
  2. 残っているコマンドの数
  3. queue 内の first コマンド
  4. queue[10] — 何も入っていないスロット

自分で試してみよう

-- ここにコードを書いてください
-- 1) queue: {string} を "save" と "load" で宣言する
-- 2) 指示の正確なテキストを追加し、位置 1 に指示の正確なテキストを挿入する
-- 3) 最後のコマンドを削除し、その後 4 つの値を出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Luau入門のすべてのレッスン

自分で練習してみよう: Luaオンラインコンパイラ