Roblox(ロブロックス)のゲーム開発のスクリプト言語に使われているLuaスクリプトに関する解説です。
ここではLuaプログラミングの基本となるデータ型について説明しています。
Luaで使用できるデータ型
Luaスクリプトで利用できるデータ型は以下の8つ。
データ型 | 値の例 | 値の例 |
nil | nilのみ | nil |
boolean (ブーリアン) | trueもしくは false | true false |
number (数値) | 整数および浮動小数点数 (小数のゼロは省略可能) | 0 123 1.00 0.333333333 -3.69 .12 |
string (文字列) | 任意の文字列 (エンコーディングは関知しない) | ABC 123 $%& 日本語 |
function (関数) | LuaもしくはCで記述された関数 | |
userdata (ユーザーデータ) | 任意のCのデータをLua変数に格納するためのポインタ 値はCのAPIを使って作成、変更する | |
thread | 独立した実行スレッドを格納。コルーチンに使用する | |
table | 連想配列(シーケンス) |
- 条件判断において
nil
およびfalse
はいずれも偽となり、それ以外の値はすべて真となります。 - 数値型は整数と浮動小数点数のサブタイプがあり、状況に応じて自動的に型変換されます。
- LuaのスレッドはOSのスレッドとは無関係。OSのマルチスレッドのサポートなどと関係なくLuaではコルーチンが利用可能です。
型の種類を確認する
ライブラリ関数type
を使用することで、指定された値の型を示す文字列(前述の表の「データ型」列にある英語表記)を取得することができます。
print(type(nil)) ->nil
print(type(false)) ->boolean
print(type(1)) ->number
print(type("ほげ")) ->string
print(type(function (x) return x end)) ->function
print(type({1,2})) ->table
配列について
Luaで使用できる配列はtable型のみ。
table型のインデックスはnil
とNaN(Not a Number)以外のLuaの値が使用可能です。
また、キーが1
から順に整数値で設定されたようなテーブルはシーケンスと呼ばれます。
テーブルのフィールドには関数も格納できる。つまりテーブルにメソッドを持たせることができます。
端数のない浮動小数点などはLua言語による等値比較のデータとして扱われます。例えば小数点以下の数値のない浮動小数点1.00
は1
と同値として比較されるため、a[2.0] = "Foo"
と書いた場合の実際のキーはa[2]
として格納されます。一方、a["2"] = "Foo"
は異なる型となるため、異なるテーブルエントリとして扱われます。
配列(table型)の詳細については以下へ続きます。