ゲーム開発

【Lua】小ネタ

Luaの言語仕様/ドキュメント/リファレンス

Luaの各種情報は公式サイトのドキュメントページから参照可能です。(ユーザ登録等は不要です)

https://www.lua.org/docs.html

※何故かうちのGoogleさんは検索結果に表示してくれない…

Luaのバージョンを確認する

デバッグ用途等でLuaバージョンをプログラムで表示したい場合があるかと思います。
その場合は以下のグローバル変数を出力することで確認することが可能です。

print(_VERSION)
> Lua 5.1
Lua 5.4 Reference Manual

コーディング規約

以下の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の挙動は以下です。

論理演算子記述例意味
andx and yxが真の場合:yを返す
xが偽の場合:xを返す
orx or yxが真の場合:xを返す
xが偽の場合:yを返す
真:false, nil以外の値、偽:false, nil

初見は「??」ってなりました…

以下に日本語で整理しておきます。
(頭悪いとか言わないで自覚してるから)

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項演算子

コメント

  1. buy androxal generic where to buy

    indian pharma androxal

  2. discount enclomiphene generic order

    buy canadian enclomiphene

  3. ordering rifaximin price canada

    Non generic rifaximin no perscription

  4. buy xifaxan generic mastercard

    order xifaxan cost on prescription

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