\n |
[ トップページ ]
[ ____CommandPrompt ]
[ ____JScript ]
[ ____MySQL ]
[ ____Cygwin ]
[ ____Java ]
[ ____Emacs ]
[ ____Make ]
[ ____Perl ]
[ ____Python ]
[ ____OpenGL ]
[ ____C# ]
[ ____StyleSheet ]
[ ____C++ ]
[ ____Winsock ]
[ ____Thread ]
[ ____VisualStudio ]
[ ____C ]
[ ____Win32API ]
[ ____Lua ]
[ ____PhotoShop ]
ヘッダ検索
■ 演算子
算術演算子
関係演算子
論理演算子( C などの 論理演算子と異なるので注意 )
■ or.and.not
if a == 10 and s == "test" then
print( "test" );
end
if a == 10 or s == "test" then
print( "test" );
end
if ( not a ) then
end
POINT
-- or : 最初の引数が false か nil 以外ならその値を返す
a = a or 10;
連結演算子 | 文字列連結
■ 代入
多重代入OK (右辺の値, 左辺の添え字がすべて評価された後, 代入 )
POINT
x, y = y, x; // 入れ替え可能.
関数も複数返すことが可能.
function f()
return 1, 2;
end
print( f );
■ 論理
if ( "aaa" ~= "bbb" )
print ( "diff" )
end
if ( "aaa" == "bbb" )
print ( "same" )
end
■ TableConstructor
SYNTAX
TableConstructor ::= { [fieldlist] }
Lua にも Constructor がある
tbl{ f1=val, f2=val ... } < -> tbl( {...} ) // Tbl関数に Arg として渡した関数.
-> DefalutArg の修理とか可能.
a = { [f(1)] = g; "x", "y"; x = 1, f(x), [30] = 23; 45 }
[exp1] = exp2 形式のフィールド
name = exp 形式のフィールドは ["name"] = exp と等価
do
local t = {}
t[f(1)] = g
t[1] = "x" -- 最初のexp
t[2] = "y" -- 2番目のexp
t.x = 1 -- temp["x"] = 1
t[3] = f(x) -- 3番目のexp
t[30] = 23
t[4] = 45 -- 4番目のexp
a = t
end
■ 関数呼び出し
( lisp と同様の設計. -> lua_type() ->
functioncall ::=
prefixexp args...
POINT
prefixexp と args が評価される ---> prefixexp が関数なら 与えられた引数で関数 call
ret = func( arg1, arg2, ...)
Function は
[ 何かの入力をうけとり ] ---> [ 何かの( 処理 | 判断 | 保存 )をして ] --> [ 何かを出力する ]
[ 何か ]を { int, float, vec3, string } と種類を限定することも可能.
Ret がない場合は nil をかえす
■ method として扱う
( OO 的な呼び出しをする. )
POINT
functioncall ::= prefixexp `:´ Name args
v:name(...) == v.name( v, ... ); == [ method ]
t:f(x) という表現は t.f(t,x);
終端呼び出し( 呼び出し側の stack entry を再利用する )
return functioncall のような呼び出し形式は
|
|
NINJAIDX 18