*Luaリファレンス 要注意点 ~型~ [#fce7251d] **型は全部で8種 [#ucf07776] -nil -boolean(ブール値) -number(数値) -string(文字列) -userdata(ユーザ定義型) -function(関数) -thread(スレッド) -table(テーブル) ~ ~ 型を知るには #sh(lua){{ type("Hello World") --> string type(print) --> function }} のようにtype関数を利用する。~ ~ **0は真 [#cc8ee498] -boolean, true, false~ ''0と""(空文字)はtrueなので注意!!''~ ~ C言語やPerlのクセが染み付いていると、強く意識していないと、よく間違える。~ ~ 1と0のスイッチは、 #sh(lua){{ a = 1 a = 1 - a -- 1→0の切り替え }} みたいな感じ。~ 以下のように勘違いしやすいので注意。 #sh(lua){{ a = 1 a = not a -- 数値→falseへと変貌するので注意 }} **10進数での文字コード表記 [#pabae49a] >~ #sh(cpp){{ printf("aaa\xAbbb"); -- 多くの言語は文字コードを16進数表記 }} これが改行と同様という言語は多いが、 #sh(lua){{ print("aaa\10bbb"); -- Lua言語は文字コードを10進数で書く }} と珍しい表記をする。 **ヒアドキュメント [#ode17572] >~ #sh(lua){{ local page = [[ <html> <body> </body> </html> ]] }} このように[[ と ]]で挟まれた文字列の''最初の文字の改行''は自動的に削除される。~ **文字列型と数値型の暗黙の変換 [#k1880dfb] -''文字列に対して、算術演算子''(+ - * / などの数値計算系)がほどこされた場合、文字列は数値への変換が試みられる。~ 変換できなければエラーとなる。~ #sh(lua){{ "10" + 1 --> 11 }} ~ -''数値に対して、文字列連結演算子''など、「文字列が期待される場所」に数値がある場合、文字列へと変換される。~ 変換できなければエラーとなる。~ #sh(lua){{ 10..31 --> 1031 print("10"+1) --> print(11) ⇒ print("11") }} ~ しかし、どのみちPerlとは異なり、 #sh(lua){{ if ( 10 == "10" ) --> false }} は ''false'' になってしまうので、''自動変換は、あまり期待出来ない''。 ~ 明示的に変換する際には、tonumber, tostring を利用すること。~