広告

【Roblox開発】Luaの基本:データ型について

Roblox

Roblox(ロブロックス)のゲーム開発のスクリプト言語に使われているLuaスクリプトに関する解説です。

ここではLuaプログラミングの基本となるデータ型について説明しています。

Luaで使用できるデータ型

Luaスクリプトで利用できるデータ型は以下の8つ。

データ型値の例値の例
nilnilのみnil
boolean
(ブーリアン)
trueもしくは falsetrue
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.001と同値として比較されるため、a[2.0] = "Foo"と書いた場合の実際のキーはa[2]として格納されます。一方、a["2"] = "Foo"は異なる型となるため、異なるテーブルエントリとして扱われます。

配列(table型)の詳細については以下へ続きます。

タイトルとURLをコピーしました