Lua c-style cp932 リファレンス

原則

  • 通常のLuaの文法も使うことが出来る。

c-style

  • c-styleの{}が使える
        -- 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氏のものがベースです。)
  • c-styleの!=が使える
    if ( 1 != 0 ) then
        print("not equal")
    end
    
  • c-styleの+=, -=, *=, /=が使える。
    i++系の「後置き」のインクリメント使える。「前置き」インクリメントは使えない。(※デクリメントはLuaのコメントと同じなので使えません)
    local a = 10;
    a += 2
    print(a)
    
    a++
    print(a)
    
    ++a -- ← エラー
    
  • テーブルの中で普通に関数を定義可能。暗黙のselfを持つメソッドとなる。

    通常、luaのメソッド定義スタイルは
    tbl = {}
    function tbl:my_method(x, y) end
    
    もしくは
    tbl = {}
    function tbl:my_method(x, y) end
    
    ですが、
    tbl = {
        function my_method(x, y) end
    }
    
    と、テーブルの中に普通にfunction定義の記述をすることが出来ます。
    この場合、functionは、第1引数に暗黙の「self」という名前の引数を持ち、関数内で利用できます。

cp932

  • 特徴
    • 文字列やコメントに日本語(cp932)が使えます。
    • 非常に限定的な修正のため、Luaの移植性に影響を与えません。
    • 2バイト文字の判定方法はcp932
  • 注意点
    • 関数や変数の名前には日本語(SJIS)が使えません。
    • エラーメッセージなどは日本語化していません。
    • EUC,UTF-8の場合、オリジナルのLuaと同じ動作となります。
    print("表")
    print("アイウ")
    
    (※cp932系の変更は「はむ!」氏のものをベースとしています。)

extension

  • 本体に組み入れたライブラリ
    • lfs(LuaFileSystem)ライブラリ
      ディレクトリやファイルの様々な情報を扱うためのライブラリ。Luaでは標準に近い立ち位置。
      print(lfs.currentdir())
      

compatible

  • LUA_COMPAT_ALL でコンパイルされていますので、Lua5.2標準規格では使えなくなったLua5.1系の記述等も、その多くが利用可能です。
  • 例えば、Lua 5.2では、
    print(table.unpack{1,2,3})
    
    というのが正しい記述となるが、
    print(unpack{1,2,3})
    
    というように、Lua5.1の記述も動作する、等

その他

  • C++やC風のコメントアウトは対応出来ない。
    理由は「//」がLua5.3にて、整数除算演算子として採用されたため。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-01-23 (土) 18:01:30 (849d)