Luaの変数

Luaで値を保存し、計算、型の確認、キーボード入力を行う方法を学ぶ。

変数を作成する

Luaの変数には明示的な型宣言が不要である。

hoge = 10
foo, bar = 10, 20

代入は任意の場所で行える。local を指定しない変数はグローバル変数になる。

変数名は英字または _ で始める。2文字目以降には数字も使えるが、ifwhilefunction などの予約語は使えない。

代入には =、等価比較には == を使う。

値を表示する

1つまたは複数の値を表示するには print() を使う。

hoge = 10
piyo = 20
print(hoge, piyo)

文字列の連結には ..、書式付き出力には string.format() を使う。

hoge = 10
print(string.format("hogeの10進数表記は%dです", hoge))
print("hogeの16進数表記は" .. string.format("%x", hoge) .. "です")

代表的な書式指定子には %d%u%o%x%f%c%% がある。

算術演算

Luaは一般的な算術演算子を利用できる。

演算子 意味
+ 加算
- 減算
* 乗算
/ 除算
% 剰余
^ べき乗
x = 10
y = 3
print(x + y)
print(x % y)
print(2 ^ 3)

動的な型

Luaでは値が型を持ち、変数は実行中に異なる型の値を参照できる。

意味
nil 値がない
boolean true または false
number 数値
string 文字列
function 関数
userdata ユーザー定義データ
thread コルーチンスレッド
table テーブル

値の型は type() で確認する。

hoge = nil
print(type(hoge))
hoge = "Hello"
print(type(hoge))
hoge = 33
print(type(hoge))

キーボード入力

入力には io.read()、自動改行なしのプロンプト表示には io.write() を使う。

io.write("メートル値を入力してください: ")
meter = io.read()
answer = meter * 3.2
print(meter .. "メートルは" .. answer .. "フィートです。")

Luaでは多重代入も利用できるため、値の交換を簡潔に書ける。

hoge, piyo = 10, 5
hoge, piyo = piyo, hoge
print(hoge, piyo)