luaベース

8074 ワード

趙子清の技術文章
  • Docs »
  • 開発言語»
  • luaベース

  • Lua自身はシンプルで優雅さを美とし、Cが苦手な任務に着目している.C/C++を利用して拡張し、Luaは無限の魅力を見せることができる.Lua自体は完全にANSI Cに従って書かれており、Cコンパイラのある場所であればLuaはその力を発揮することができる.Luaはpythonのような大きなライブラリを追求する必要はありません.あまりにも多くの負担があり、かえって彼女の優美さを破壊します.
    -翻訳
    本文章はlua 5.2に基づく.
    知識を準備する.
    luaを得る.
    luaは非常に小さい、ほとんどのシステムをサポートしている.Linuxには基本的にluaがプリインストールされていますが、他のシステムではluaを入手する方法については、以下を参照してください.http://lua-users.org/wiki/LuaBinaries
    luaコマンドライン
    luaをインストールすると、luaコマンドラインが使用できます.その使用は非常に簡単です.
    usage: lua [options] [script [args]]
    Available options are:
      -e stat  execute string 'stat'
      -i       enter interactive mode after executing 'script'
      -l name  require library 'name'
      -v       show version information
      -E       ignore environment variables
      --       stop handling options
      -        stop handling options and execute stdin
    

    パラメータを加えることなくインタラクティブな環境に入る.
    argグローバル変数はすべてのパラメータを保存する、スクリプト名インデックスは0であり、スクリプトパラメータのインデックスは1から始まり、スクリプト前のパラメータのインデックスは負である.例:
    $lua -e "print 'hello'" test.lua a b
    

    argが保存した値は次のとおりです.
    arg[-3] = lua
    arg[-2] = -e
    arg[-1] = print 'hello'
    arg[0] = test.lua
    arg[1] = a
    arg[2] = b
    

    キーワードを保持する.
    luaの変数コマンドはC言語と一致するが、このような識別子は一般的に内部で使用するため、下線に大文字を加えた識別子は使用しないほうがよい.luaの保持キーワードは次のとおりです.
    and     break   do      else        elseif
    end     false   for     function    if
    in      local   nil     not         or
    repeat  return  then    true        until
    while
    

    注釈.
  • 単一行注記:–
  • 複数行コメント–[-]]
  • Chunk¶
    Chunkは一連の文です.luaが実行する文ブロック、例えばファイルインタラクションモードの各行がchunkである.
    データ型
    luaは動的タイプ言語であり、変数を宣言する際にデータ型を指定する必要はない.
    luaには8つの基本タイプがあります.
  • nil
  • boolean
  • number
  • string
  • userdata
  • function
  • thread
  • table

  • type()関数を使用すると、所定の変数または値のタイプを表示できます.
    string¶
  • 文字列の文字面値は、単一引用符でも二重引用符でも使用できます.スタイルを統一した
  • が望ましいです.
  • はまた、[[string]]という形式で文字列を表すことができ、この場合、文字列は複数行を含むことができ、
  • はエスケープされない.
  • luaは、必要に応じてnumberとstringを互いに変換し、tostring()とtonumber()を使用して明示的に
  • 変換することもできる.
  • ..は文字列コネクタであり、いくつかの言語の+
  • に相当する.
    警告
  • luaで条件判断を用いる場合、falseとnilが偽である以外はすべて真であるため、数字0と空の文字列も真である.
  • stringには0があり、読み取り可能であり、変更するには
  • 変数を新規作成する必要があります.
    userdata¶
    userdataは、Cデータをlua変数に格納ことができ、付与値と等しい比較以外に他の操作はない.userdataは、アプリケーションまたはC実装ライブラリを用いて作成する新しいタイプを記述するために使用される.
    //todo
    thread¶
    //todo
    式.
    演算子/演算子
    二元:+-*/^(べき乗)
    一元:-(負)
    関係演算子
    lua関係演算子には、次のものが含まれます.
    <   >   <=  >=  ==  ~=
    

    関係演算子の結果はtrueまたはfalseである.table,userdata,functionについては,値比較ではなく参照により比較する.
    警告
    =ではなく~=ではありません!=
    論理演算子.
    lua論理演算子には、次のものが含まれます.
    and     or    not
    

    警告
    andとorの結果はtrue/falseではなく、2つの操作数と関係があり、以下の例を参照する.
    短大欄lua基礎
    print(4 and 5)      --> 5
    print(nil and 13)   --> nil
    print(false and 13) --> false
    print(4 or 5)       --> 4
    print(false or 5)   --> 5
    

    接続演算子
    すなわち、2つの点..は、両側にスペースを付けることが望ましい.
    演算子の優先度/
    lua演算子の優先度は、次のようになります.
    ^
    not     - (unary)
    *   /
    +   -
    ..
    <   >   <=  >=  ~=  ==
    and
    or
    

    語句.
    値をつける.
    luaは、複数の変数に同時に値を割り当てることができ、変数リストと値リストの各要素はカンマで区切られます.
    a, b = 10, 2*x
    

    luaは、付与文の右側のすべての値を計算してから付与操作を行うので、luaでは次のように2つの変数の値を交換できます.
    x, y = y, x
    

    局所変数
    ローカル変数はlocalで宣言することができ、宣言されたコードブロックでのみ有効である.ローカル変数へのアクセスは、グローバル変数よりも高速であり、名前の競合を回避することができる.ローカル変数をdoに置くことができます..endでは、まるでCの{}のようです.
    条件文.
    lua条件文には主に3つの構造があります.
    if cond then            -- C: if(cond) {
        then-part           --     }
    end;
    
    if cond then            -- C: if(cond) {
        then-part           --    }
    else                    --    else {
        else-part           --    }
    end;
    
    if cond1 then           -- C: if(cond1) {
        then-part           --    }
    elseif cond2 then       --    else if(cond2) {
        elseif-part         --    }
    ..                      --    ..
    else                    --    else {
        else-part           --    }
    end;
    

    if文の後ろのthenと最後のendに注意してください.
    循環文.
    while:
    while cond do       -- C: while(cond) {
        statements;     --    }
    end;
    

    repeat-until:
    repeat              -- C: do{
        statements;     --    } while(cond)
    until cond;
    

    for:
    for var=start,end,step do   -- C: for(var=start;var<=end;var+=step) {
        loop-part               --    }
    end
    

    警告
  • forの後の式はループ開始前に1回
  • しか計算されない.
  • 上のC等価文は実際には完全に一致していない.stepは負の
  • でもよいからだ.
  • stepは省略できますが、デフォルトは1
  • です.
  • end値も1回ループされるので、論理はCのfor(i=start;i!=end;i+=step)
  • に等しくない
  • サイクル中に制御変数の値を変更しないでください.そうしないと、結果は予知できない
  • になります.
    break文はループを終了するために使用できますが、文ブロックの最後の文でなければなりません.
    関数/
    © Copyright 2019,趙子清