Luaの言語仕様/ドキュメント/リファレンス
Luaの各種情報は公式サイトのドキュメントページから参照可能です。(ユーザ登録等は不要です)
※何故かうちのGoogleさんは検索結果に表示してくれない…
Luaのバージョンを確認する
デバッグ用途等でLuaバージョンをプログラムで表示したい場合があるかと思います。
その場合は以下のグローバル変数を出力することで確認することが可能です。
print(_VERSION)
> Lua 5.1
コーディング規約
以下の2つから好みに合わせて選ぶのが良いと思います。(私は②派です)
①Luaユーザコミュニティが提供するスタイルガイド
http://lua-users.org/wiki/LuaStyleGuide
②LuaRocks(Luaのパッケージマネージャ)が提供するスタイルガイド
https://github.com/luarocks/lua-style-guide
※環境によっては独自にコーディング規約を設けている場合もあるので(Roblox等)、その場合はそちらを優先した方が良いです。
ブロックコメント
-- 通常のコメントは'-'(半角ハイフン)二つ
--[[
ブロックコメントは
'-'(半角ハイフン)二つと
'['(半角 角括弧)二つ
--]]
小数点の切り上げ・切り捨て
Luaは標準でmathライブラリがあるので、小数点の切り捨て・切り上げに限らず大体何でもできます。
-- 切り捨て
math.floor(1.5)
> 1
-- 切り上げ
math.ceil(1.5)
> 2
ラムダ式を作る
名前を付けずに関数を作ればいいと思っていましたが、Wikipedia先生によるとLuaは「すべての関数が本質的に無名関数」らしいです。
よくわからないので構文と例文だけ書いときます。
Luaでの無名関数の構文は以下です。
function(仮引数, ...) 処理A; ...; 処理Z end
例えば以下のように使えます。
-- 例:2乗する関数
(function(x) return x * x end)(5)
> 25
-- 例:テーブルのキーと値を全てprint
(function(tbl) for k, v in pairs(tbl) do print(k..':'..v) end end)({a = '123', b = '456'})
> a:123
> b:456
-- 当然変数への代入も可能
myFunc = function(x) return x * x end
3項演算子っぽいことをする
Luaに3項演算子は無いらしいので、andとor演算子の挙動を利用して3項演算子っぽいことをします。
構文は以下です。
条件式 and 真の時の値 or 偽の時の値
例えば以下のように使えます。
-- 数値型以外の場合は0に補正する三項演算子(もどき)
y = (type(x) == 'number') and x or 0
-- x = 123.456の時
print(y)
> 123.456
-- x = 'abcdef'の時
print(y)
> 0
因みにandとorの挙動は以下です。
論理演算子 | 記述例 | 意味 |
---|---|---|
and | x and y | xが真の場合:yを返す xが偽の場合:xを返す |
or | x or y | xが真の場合:xを返す xが偽の場合:yを返す |
初見は「??」ってなりました…
以下に日本語で整理しておきます。
(頭悪いとか言わないで自覚してるから)
x and y
xが偽の場合はyに関わらず偽なので偽(x)を返す
xが真の場合はyの真偽で決まるのでyを返す
x or y
xが真の場合はyに関わらず真なので真(x)を返す
xが偽の場合はyの真偽で決まるのでyを返す
参考
http://www.nct9.ne.jp/m_hiroi/light/lua03.html
https://ie.u-ryukyu.ac.jp/~e085739/lua.hajime.2.html
無名関数(Wikipedia)
Lua で3項演算子
コメント