====== 008 DefoldでのLuaについて ======
Defoldでロジックを書くときはLuaを使います。
* 拡張子は**script**
* Luaの構文について詳しくは、リファレンス[[http://milkpot.sakura.ne.jp/lua/lua51_manual_ja.html|Lua 5.1 リファレンスマニュアル]] を参照すると良いです。
===== 構文 =====
-- 1行コメント
--[[
複数行コメント
--]]
a = 10
b = 20; c = 30
foo, bar = 40, 50
===== 型について =====
==== nil ====
-- 宣言しなければインスタンスが存在しないためnilになります。
print(my_var)
if my_var then
print("my_var is not nil nor false!")
end
if not my_var then
print("my_var is either nil or false!")
end
この場合if not my_var then が出力されま。
==== boolean ====
flag = true
if flag then
print("flag is true")
else
print("flag is false")
end
この場合flag is true が出力されます。
==== 数値 ====
print(10) --> prints '10'
print(10.0) --> '10'
print(10.000000000001) --> '10.000000000001'
a = 5 -- integer
b = 7/3 -- float
print(a - b) --> '2.6666666666667'
==== 文字列 ====
\a -- ベル文字(アラート)
\b -- 1文字分戻る
\f -- ページ送り(クリア)
\n -- 改行、復帰
\r -- 同じ行の先頭に戻る
\t -- 水平タブ
\v -- 垂直タブ
\\ -- \を表示
\" -- ダブルクォーテーション(")を表示
\' -- シングルクォーテーション(')を表示
\[ -- left square bracket
\] -- right square bracket
\ddd -- character denoted by its numeric value where ddd is a sequence of up to three decimal digits
my_string = "hello"
another_string = 'world'
print(my_string .. another_string) --> "helloworld"
print("10.2" + 1) --> 11.2
print(my_string + 1) -- error, can't convert "hello"
print(my_string .. 1) --> "hello1"
print("one\nstring") --> one
--> string
print("\097bc") --> "abc"
multi_line_string = [[
Here is a chunk of text that runs over several lines. This is all
put into the string and is sometimes very handy.
]]
==== 関数 ====
-- MyPlusという名の関数で、 a + b の結果を返す
MyPlus = function(a, b)
return a + b
end
-- MyPlusという名の関数で、 a * b の結果を返す
function MyMultiple(a, b)
return a * b
end
-- 関数を引数に渡すことができる
function operate(func, a, b)
return func(a, b)
end
-- 使用例
print(operate(MyPlus, 4, 5)) --> 9
-- Create an adder function and return it
function create_adder(n)
return function(a)
return a + n
end
end
adder = create_adder(2) -- n に2が入った状態で初期化。
print(adder(3)) --> 2+3 = 5
print(adder(10)) --> 2+10 = 12