*Lua c-style cp932 リファレンス[#w0855ffe] **原則 [#i28aacb9] -通常のLuaの文法も使うことが出来る。 **c-style [#h67879a7] - c-styleの{}が使える #sh(lua){{ -- c-like lua function add(x,y) { return x + y } //階乗 function factorial_while(n) { //whileで階乗してみる sum = 1 i = 1 while(i <= n) { sum = sum * i i = i + 1 } return sum } //階乗 function factorial_for(n) { //forで階乗してみる //すまないが、 lua のforを 完全にc-likeにしきれていないんだ sum = 1 for (i = 1 , n , 1 ) { //or for (i = 1 , n ) { sum = sum * i; } return sum } }} (※これら{ }系の拡張は[[rti7743:https://github.com/rti7743/rtilabs/tree/master/files/asobiba/lua]]氏のものがベースです。) - c-styleの!=が使える #sh(lua){{ if ( 1 != 0 ) then print("not equal") end }} - c-styleの+=, -=, *=, /=が使える。~ i++系の「後置き」のインクリメント使える。「前置き」インクリメントは使えない。(※デクリメントはLuaのコメントと同じなので使えません) #sh(lua){{ local a = 10; a += 2 print(a) a++ print(a) ++a -- ← エラー }} - テーブルの中で普通に関数を定義可能。暗黙のselfを持つメソッドとなる。~ ~ 通常、luaのメソッド定義スタイルは #sh(lua){{ tbl = {} function tbl:my_method(x, y) end }} もしくは #sh(lua){{ tbl = {} function tbl:my_method(x, y) end }} ですが、 #sh(lua){{ tbl = { function my_method(x, y) end } }} と、テーブルの中に普通にfunction定義の記述をすることが出来ます。~ この場合、functionは、第1引数に暗黙の「self」という名前の引数を持ち、関数内で利用できます。 **cp932 [#h67879a7] - 特徴 --文字列やコメントに日本語(cp932)が使えます。 --非常に限定的な修正のため、Luaの移植性に影響を与えません。 --2バイト文字の判定方法はcp932 -注意点 --関数や変数の名前には日本語(SJIS)が使えません。 --エラーメッセージなどは日本語化していません。 --EUC,UTF-8の場合、オリジナルのLuaと同じ動作となります。 -~ #sh(lua){{ print("表") print("アイウ") }} (※cp932系の変更は「[[はむ!:http://hammm.dw.land.to/lua/]]」氏のものをベースとしています。) **compatible [#v98393d1] - LUA_COMPAT_ALL でコンパイルされていますので、Lua5.2標準規格では使えなくなったLua5.1系の記述等も、その多くが利用可能です。~ -例えば、Lua 5.2では、 #sh(lua){{ print(table.unpack{1,2,3}) }} というのが正しい記述となるが、 #sh(lua){{ print(unpack{1,2,3}) }} というように、Lua5.1の記述も動作する、等 **その他 [#fef4842a] - C++やC風のコメントアウトは対応出来ない。~ 理由は「//」がLua5.3にて、整数除算演算子として採用されたため。