- 追加された行はこの色です。
- 削除された行はこの色です。
*Lua c-style cp932 リファレンス[#w0855ffe]
**原則 [#i28aacb9]
-通常のLuaの文法も使うことが出来る。
**c-style [#h67879a7]
- c-styleの{}が使える
- ''c-styleの{}が使える''
#sh(lua){{
-- c-like lua
function add(x,y) {
return x + y
}
//階乗
--階乗
function factorial_while(n) {
//whileで階乗してみる
--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 ) {
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の!=が使える
- ''c-styleの!=が使える''
#sh(lua){{
if ( 1 != 0 ) then
print("not equal")
end
}}
- c-styleの+=, -=, *=, /=が使える。~
i++系の「後置き」のインクリメント使える。「前置き」インクリメントは使えない。
- ''c-styleの+=, -=, *=, /=が使える。''~
i++系の「後置き」のインクリメント使える。「前置き」インクリメントは使えない。(※デクリメントはLuaのコメントと同じなので使えません)
#sh(lua){{
local a = 10;
a += 2
print(a)
a++
print(a)
++a -- ← エラー
}}
- テーブルの中で普通に関数を定義可能。暗黙のselfを持つメソッドとなる。~
- ''テーブルの中で普通に関数を定義可能。暗黙の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/]]」氏のものをベースとしています。)
**extension [#p94f3d0d]
- 本体に組み入れたライブラリ
--''lfs''([[LuaFileSystem>http://keplerproject.github.io/luafilesystem/]])ライブラリ~
ディレクトリやファイルの様々な情報を扱うためのライブラリ。Luaでは標準に近い立ち位置。
#sh(lua){{
print(lfs.currentdir())
}}
**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にて、整数除算演算子として採用されたため。