キャスト(cast)
Luaは文字列と数値を実行時に自動的に変換してくれる。
-- number -> string
c = 10 + 20;
String.print( c );
Number -> 文字列演算 -> String
string -> 数値演算 -> Number
nr = nr + "1";
nr += "35"; -- これはダメらしい.
文字列と数値の結合ができる
-- "number = 10"
"number = " .. 10
WARNING
bool は .. で文字列に cast できない?
str = str .. 10
POINT
C では float -> int では自動的に少数部が切り捨てられる.
Lua では数値という概念しかないので, 切り捨てられることはない.
-- math.abs() の型 chk version を用意する.
function myabs(n)
if(type(n) ~= "number" ) then
print(n);
error("must be a number prm");
end
print(math.abs(n));
end
myabs( "10" );
WARNING
だたし等号をとるときは, 同じ型である必要がある。
if "107" == "107" then
print ( "true" )
end
代入演算子 [ = ] の左側にかける[ 式 ]を [ 左辺値 ] という
loadstring("print(_VERSION)")()
loadstring("print(_VERSION)") -- 戻り値は関数.
POINT
戻り値として使用する関数を, 高階関数という.
table を返して, すぐに利用する.
function test()
arr = { 1, 2, 3 };
return arr;
end
do
test()[2] = 10;
print( test()[3] );
end