0Pricing
Lua Academy · レッスン

テーブルとしての配列

Luaの1始まりのインデックスを学びます。

「テーブルとしての配列」はCoddyKit上の無料Lua Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLua Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Lua Academyコースには全4レッスンが含まれています。

テーブルはLuaのリスト

Luaには、コンテナ型としてtableが1つだけあります。値を順番に格納すると、tableは配列やリストのように機能します。

{}で空のtableを作成して後から値を追加することも、波括弧の中に最初から値を並べることもできます。

local fruits = {"apple", "banana", "cherry"}
print(fruits)

インデックスは1から始まる

これは最も重要なルールです。Luaの配列は1始まりです。最初の要素は0ではなく、インデックス1に格納されます。

角括弧を使うと、位置を指定して要素を読み取れます。

local fruits = {"apple", "banana", "cherry"}
print(fruits[1])
print(fruits[2])
print(fruits[3])

インデックス0は空

数え始める位置が1なので、位置0には通常何も格納されていません。

まだ値を設定していないインデックスを読み取ると、nilが返ります。他の言語から来た初心者が、よくつまずくポイントです。

local colors = {"red", "green", "blue"}
print(colors[0])
print(colors[1])

要素を書き込む

ブラケット構文で位置を指定して代入すると、値を設定または置き換えられます。

ここでは2番目のスロットを上書きしています。次にそのインデックスを読み取ると、変更を確認できます。

local scores = {10, 20, 30}
scores[2] = 99
print(scores[2])

段階的にtableを作成する

空のtableから始めて、連続したインデックスに要素を追加できます。切れ目のない並びにするため、必ず1から始めてください。

シーケンスには穴がありません。インデックス1、2、3がすべて埋まっています。

local nums = {}
nums[1] = 5
nums[2] = 10
nums[3] = 15
print(nums[1], nums[2], nums[3])

異なる型の値

Luaのtableでは、同じシーケンス内に異なる型の値を格納できます。数値、文字列、真偽値などです。

一部の言語のように、すべての要素を同じ型にする必要はありません。

local mixed = {42, "hello", true}
print(mixed[1])
print(mixed[2])
print(mixed[3])

すべての要素を表示する

すべての要素を表示するには、数値forループでインデックス1から順にたどります。

後のレッスンでは、より簡潔な方法(ipairs)を学びますが、このループを使うと1始まりの範囲が明確になります。

local pets = {"cat", "dog", "fish"}
for i = 1, 3 do
  print(i, pets[i])
end

ネストしたtable

tableの要素自体をtableにすることもできます。これにより、行、グリッド、グループ化されたデータを構築できます。

ブラケットを連続して書くと内部にアクセスできます。grid[1][2]は1行目2列目を読み取ります(どちらも1始まりです)。

local grid = {
  {1, 2, 3},
  {4, 5, 6}
}
print(grid[1][2])
print(grid[2][3])

位置による最初と最後

最初の要素は常にlist[1]です。サイズがわかっているシーケンスでは、最後の要素はその要素数の位置にあります。

ここでは3つの要素があるため、最後の要素はインデックス3にあります。

local week = {"Mon", "Tue", "Wed"}
print("first:", week[1])
print("last:", week[3])

値をその場で変更する

tableは変更可能です。リスト全体を作り直さなくても、既存のスロットを更新できます。

以下では、ループ内で各インデックスに再代入し、すべてのスコアを増やしています。

local scores = {1, 2, 3}
for i = 1, 3 do
  scores[i] = scores[i] + 10
end
print(scores[1], scores[2], scores[3])

レコードとしてのtableと配列としてのtable

同じtable型に、person.nameのような名前付きキーも格納できます。キーが1、2、3...という整数の場合は、シーケンスまたは配列と呼びます。

このレッスンでは、1始まりの数値キーを使うシーケンス形式に焦点を当てます。

local list = {"a", "b"}
list[3] = "c"
print(list[1], list[2], list[3])

理解度チェック

Luaのインデックスについての理解度を確認しましょう。

まとめ

Luaではtableを配列として使い、インデックスは1始まりであることを学びました。最初の要素は[1]にあります。

tableの要素の読み取り、書き込み、ネストができ、きれいなシーケンスには隙間がありません。次は、要素を動的に追加・削除する方法を学びます。

よくある質問

「テーブルとしての配列」レッスンは無料ですか?

はい。「テーブルとしての配列」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Lua Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Lua Academyコースには全4レッスンが含まれています。

「テーブルとしての配列」で何を学びますか?

Luaの1始まりのインデックスを学びます。 ブラウザで直接実行するハンズオンコードでLua Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Lua Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLua Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「テーブルとしての配列」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLua Academyレッスンでコードを書いて実行できますか?

はい。すべてのLua Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. テーブルとしての配列
  2. 要素を追加・削除する
  3. ipairsで反復処理する
  4. 長さとソート
← Lua Academyに戻る