*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にて、整数除算演算子として採用されたため。


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS