Lua言語学習

9483 ワード

命名規則の違い
  • パスカル命名法は主にクラスと方法に命名され、各単語の頭文字はすべて大文字で、残りの小文字は
  • です.
  • アルパカの命名法は主に変数に命名され、最初の単語はすべて小文字で、残りの単語は頭文字が大文字で、残りの小文字は
  • です.
    SciTEエディタ使用マニュアル
  • は、に保存する必要があります.lua接尾辞ファイル
  • 空白ファイルは
  • 保存できません.
  • を保存してから運転できる(F 5を押す)
  • 変数#ヘンスウ#
  • luaでは変数にデータ型を指定する必要はなく、格納値に基づいて
  • を決定する.
  • LUAセミコロン末尾
  • は不要
  • number,数値タイプ,格納整数および小数
  • booleanブールタイプ、trueとfalseの2つの値
  • のみ
  • string文字列タイプ、二重引用符、単一引用符のいずれも可能、lua種charなしタイプ
  • 単一文字でもtypeはstringタイプ
  • を返します.
  • type()メソッドでは、変数のタイプ
  • を取得できます.
  • C#種、floatタイプの数の末尾にあるf末尾
  • 注釈は3種類ある
  • 単一行注釈--
  • 複数行注釈は3種類あります
  • --[[ ]]
  • --[[ --]]
  • --[[ ]]--


  • 演算子
  • Luaには++と-
  • はありません
  • C#の+番号には、数学的加算と文字列接続の機能
  • があります.
  • Luaは数学的な意味しかなく、文字列接続は..
  • である.
  • luaには複合付与演算子、すなわち+=,-=これらの
  • はありません.
  • luaの関係演算子は~=
  • です.
  • luaの和または非and,or,not
  • ぶんきこうぞう
  • c#はluaの中の包み方とは異なり、luaはif( )then end
  • else構造if( ) then else end
  • 注意thenキーワードはifの下に
  • 表示されます.
  • else if構造if( ) then elseif( ) then else end
  • luaでelseifの2つの単語はつながっていて、真ん中にスペースがありません
  • luaにswitch文がない
  • じゅんかんこうぞう
  • luaにdoendで符号体
  • を包む
  • luaでカンマで区切り、C#でセミコロン
  • //10 i<=10      
    //1  i+1      ,  
    for i=0,10,1 do
         
      end
  • while文、doとendでコード体
  • を包む
    while(     )
    do
        
    end
  • lua言語にはdo while文はありませんが、新しい文
  • があります.
    repeat
       
    until (a
  • untilの役割はwhileとは正反対で、満たされていない場合にのみ実行され、満たされていない場合には終了します-luaにはbreakキーワードしかなく、c#にはbreakとcontinueの2つのキーワードがあります
  • はいれつ
  • C#バージョンは、固定データ型の配列
  • のみを格納できます.
  • luaの配列は、複数の異なるタイプのデータ
  • を格納することができる.
       ={  1,  2,  3,  N}
  • C#でループ配列、下付きは0から
  • luaでは配列をループし、下付きは1から、配列長を取るにはtable.getn( )
  • が必要である.
  • C#の配列長は固定されていますが、Luaの配列長は固定されていません.配列を宣言した後も、後続の下付き位置に値
  • を追加できます.
    関数#カンスウ#
    [  /  ] function[    ]
            --   
            end
  • lua言語では、スクリプトの作成順序で関数を定義してから、
  • を呼び出すことができます.
  • C言語では、関数伝達は
  • を実現するために委任する必要がある.
  • Lua言語には依頼概念がなく,
  • を直接パラメータとして渡すことができる.
    function Add(a,b)
        return a+b
        end
    
    function DelegateF(a,b,func)
         retuen func(a+b)
         end
    DelegateF(1,2,Add)

    スコープの比較
  • C#のグローバル変数宣言が完了すると、手動で付与値を初期化しなくてもデフォルト値があり、int型は0、参照型はnull
  • となります.
  • ただし、ローカル変数の宣言が完了すると、値を割り当てる必要があります.そうしないと、
  • は使用できません.
  • Lua言語の変数は、デフォルトではすべてグローバル変数であり、関数内に宣言された変数であってもグローバル変数
  • である.
  • は、関数内の変数
  • にアクセスする前に、関数を一度実行する必要がある.
  • 関数内の変数をlocalと宣言できる場合、
  • にアクセスできません.
  • 外部で定義された変数は、localであっても関数内でC#のprivateのようなフィールドにアクセスでき、クラスでは
  • にアクセスできます.
  • luaのデフォルト関数はグローバル関数であり、ローカル関数に設定するにはlocalを使用する必要があります.privateと同様に、外部スクリプトのみにアクセスする場合に制限されます.
  • 文字列の表現
  • には3つの表現形式があります
  • "hello"
  • を二重引用符で囲む
  • 'hello'
  • を引用符で囲む
  • は2つの中括弧で[[hello]]
  • を包む.
  • 注意事項
  • Luaでは二重引用符、一重引用符の効果はほぼ同じで、中括弧は比較的特殊で、元のフォーマット出力
  • に属する.
  • lua言語では文字列が接続され、..
  • である.
  • 共通エスケープ

  • 改行
  • \\
  • \"
  • \'個'
  • C#と同じ意味
  • 常用string操作
  • 注意luaに内蔵されているクラスと方法はすべて小文字
  • です.
  • 変換大文字小文字string.upper(),string.lower()
  • 文字列反転string.reverse( )
  • 文字列長string.len()
  • 文字列反転string.reverse()
  • 文字列置換string.gsub( , , ,[ ])
  • 置換回数書き込みがない場合は、デフォルトではすべて置換
  • である.
  • 文字列をフォーマットするには、c#に2つの方法があります.
  • Console.WriteLine(" , "+name);
  • 文字列と変数
  • を+番号で接続
  • 第2の態様
  • Console.WriteLine(" , {0}",name)
  • プレースホルダ方式
  • U 3 D種ではCWなしでstring.format()で文字列フォーマット
  • を行う.
  • Lua言語にstringがあります.format()関数、文字列をフォーマットできます
  • 異なる点は、フォーマット説明子を使用して占有される点であり、c言語とよく似ている
  • %dは整数
  • を表す.
  • %sは文字列
  • を表す.
  • %fは小数を表し、%0.1 fは1桁の小数を保持し、%0.2 fは2桁の小数
  • を保持する.

    table
  • Lua言語種の配列はtableタイプ
  • である.
  • tableはLua言語のコードフォーマット構造であり、配列はこのような構造を用いて実現された
  • である.
  • 基本使用
  • table ={}
  • を初期化する.
  • tableに値を付与には、配列方式の角標に値を付与する2つの方式があり、キー値対方式
  • がある.
    myTable2={}
    
    myTable2["   "]=23
    myTable2["   "]=20
    myTable2["  "]=12
    
    myTable={}
    
    myTable[1]="JIAYAJIE"
    myTable[2]="kusdjias"
    myTable[3]=223
    
    -      
    
    //    
    for key,value in ipairs(  ) do
        print(key,value)
        end
               pairs  //                        
  • tableのいくつかの方法
  • 追加要素
  • table.insert(  ,[  ], )      
            [ ]= 
  • 除去要素
  • table.remove(  ,[  ])
    //        ,                ,    ,     ,         
    //     
      [ ]=nil
  • table長
  • //       
    table.getn(  )    
    //     

    モジュール
  • モジュールの基本メンバーは、変数と関数
  • としても
  • Lua言語のモジュールは、C#に書かれた静的ツールクラス
  • と機能的に類似しています.
  • Luaのモジュールは、文法的にネーミングスペースに似ており、
  • を使用するには導入が必要です.
  • 新しいluaスクリプト
  • を作成
  • は、スクリプト名と同じ名前のtableを初期化します.
  • 用tableName.変数、およびtableName.functionは変数と関数
  • を定義する
  • モジュールの最後にreturnモジュール名
  • を書く
  • モジュール、require(「モジュール名」)またはrequire「モジュール名」
  • を使用
  • 変数およびメソッド
  • にアクセスする
    メタテーブル
  • メタテーブル(metatable)は、2つのテーブルの間に付属関係を生じさせ、マスタテーブルを操作するだけでメタテーブル
  • を間接的に操作することができる.
  • Lua言語でオブジェクト向けをシミュレートし、メタテーブルは不可欠な
  • である.
  • 基本操作
  • 2 2 2つの一般テーブル
  • をインスタンス化
  • 関連する2つのテーブル
  • setmetatable(表A,表B)表Aを表Bの主表とし、表Bはメタ表
  • とする.
  • getmetatableテーブル名にメタテーブルがある場合はメタテーブルのタイプとアドレスを返し、ない場合はnil
  • を返します.
  • __indexインデックス
  • マスタテーブルでメタテーブルのメンバーを操作するには、メタテーブルの__index
  • を設定する必要がある.
  • 元テーブル名._index=メタテーブル名
  • テーブル名を直接使用できます.要素
  • にキー名でアクセス
    tableA={name=' ',age=22,gender='woman'}
    tableB={Bname=' ',Bage=25,Bgender='man'}
    //    
    setmetatable(tableA,tableB)
    print(getmetatable(tableA))
    //  __index  
    tableB.__index=tableB
    print(tableA.Bname)

    オブジェクト向けの紹介
  • Lua自体には強力なクラスライブラリはなく、単純でコンパクトな言語であり、他の言語の補助として存在する
  • である.
  • Lua言語自体にクラスとオブジェクトの概念がない
  • Tableを用いてクラスとオブジェクトの関係をシミュレートした
  • .
    命名規則