Luaの8種類のデータ型と基本文法

12552 ワード

8種類のデータ型
  • number実数、整数、浮動小数点数
  • string文字列は、付与値が変更できない場合、メソッドstringによって変更することができる.gsub()は
  • を修正する
  • nilグローバル変数は割り当てられていませんデフォルトはnilで、変数を削除するとnil
  • に割り当てられます.
  • boolean(bool)falseとnilは偽であり、その他は真
  • である.
  • function関数
  • table配列、容器
  • userdata(クラス、他の言語が変換されるとuserdataタイプになる)
  • threadスレッド
  • 注意が必要
  • Luaの変数には事前定義のタイプがなく、各変数には任意のタイプの値を含めることができ、1つのデータ型の値
  • を直接割り当てることができる.
  • nilタイプはnilの1つの値について、変数が付与されているかどうかを示し、変数がnilに付与されていることも削除変数
  • を示す.
  • Type(xxx変数)を使用して、その変数のデータ型
  • を取得することができる.
  • numberすべての数字、int float doubleタイプなどはnumberタイプ
  • です.
  • 文字列は、付与値が変更できない場合、メソッドstringによって変更することができる.gsub()を修正するには、「xxas」の単一引用符と書くことができますが、二重引用符を使用することをお勧めします」
  • numberタイプは、すべての数字の文字列と計算することができ、文字列はタイプ変換
  • を行う.
  • .. 接続記号、文字列タイプ、整形変数を接続できますが、実際の数値を直接使用する場合は、数値が表示されるため、後ろにスペースを追加します.2つの浮動小数点が1のように見えます..2(書き方を誤る)1.2(正しい書き方)
  • タイプが異なる、numberタイプの123がstringタイプの123
  • に等しくないなど、比較判断も等しくない.
  • 計算演算子の余剰は浮動小数点数と計算でき、小数点レベル
  • まで正確に計算できる.
  • 関係演算子における~=は等しくなく、cのような他の言語を表す!=
  • 論理演算子and,or,not対応&,|,!
  • 式:a and b aが偽であればaを返すb,a or b aが真であればaを返すb,簡単に理解するとandはa a aが正しいと判断してbを判断し続け,bもbtrueを正しく返すとif(a and b)がtrueとなり,これも実際には&&の使用原理の一つであり,aが偽であればfalseが直接a if(a and b)に戻るのがfalseである.or同理|
  • 賦値方式1:複数の変数が同時に賦値され、複数の変数(変数個数が値個数より多い)がnilにデフォルト設定され、少ない変数(変数個数が値個数より少ない)が処理されず、
  • をタイプ混在させることができる.
  • ローカル変数はlocal修飾で宣言され、メモリはスタック上にあり、1つの関数、コードブロック{}内の関数、コードブロックが終了し、メモリは自動的に
  • を解放する.
  • グローバル変数はスタック上にあり、いつでも作成でき、プログラムが終了し、メモリが自動的に解放される
  • 制御文にif for whereがありswitch構造がない
  • 制御文では、(){}{指代:then}指代:end
  • を書く必要はありません.
  • ループ構造while doend、中には()および+-+=類似の演算子が書けない
  • ループ構造forも書く必要はない()また、最初の付与に加えて、デフォルトの書き込みを省略して<=+xxまたは>=-xx
  • と書くこともできます.
  • 関数の戻り値は、他の言語と同様に、値、変数を返すことができます.しかし、異なるのは、複数の変数を同時に返し、複数の付与
  • を行うことである.
  • tableは配列の形式、辞書の形式、配列辞書が同時に混合する形式
  • を有することができる.
  • print()印刷では、デフォルトの改行
  • が行われます.
  • #番配列は配列コンテナtableを計算する下付き個数であり、luaの配列コンテナ下付きは1からインクリメントを計算し、辞書にはkey要素
  • は含まれない.
  • には2つの遍歴構造pairs,ipairsがあり、1つ目はすべての要素を遍歴し、2つ目はkeyタイプのない要素のみを遍歴し(辞書を遍歴しない)、nil
  • を返すことはできません.
    タイプ変換tonumber()tostring()
    if tonumber("123") == 123 then
        print("  ")
    else
        print("   ")
    end

    論理演算子
    num1 = nil
    num2 = 123
    result = num1 and num2
    print(result)
    result2 = num1 or num2
    print(result2)
    print(not num1) -- nil->  ->true
    print(not num2) --   ->  ->false

    どうじわりあて
    num1, num2 , num3 = "asd" ,'sdfasdf', 123, 534
    print(num1,num2,num3)

    関数とローカル変数
    function Func( )
        local  num1 = 100
        num2 = 10
    end
    Func();
    print(num1)
    print(num2)

    せいぎょぶん
    num = 75
    if num < 60 then
        print("num < 60")
        print(";-)")
    elseif num > 70 and num < 75 then --elseif     ,
        print("num > 70 and num < 75")
    elseif num < 60 or num >= 75 then
        print("num < 60 or num >= 75") --   
    else
        print("num ?")--    
    end
    --while  
    sum = 0
    count = 1
    while count <= 5 do
        sum = sum + count
        count = count + 1 
    end
    print(sum) -- 1 2 3 4 5 
    --for
    for num = 1,10,2 do
        print(num) -- 1 3 5 7 9
    end 
    
    for num2 = 10 ,0, -2 do
        print(num2) -- 10 8 6 4 2 0
    end

    関数の書き方
    function funcA()
    local num1 = 10
    local num2 = 20
    print(num1+num2)
    end
    funcA() --30
    --      
    function funcB()
        return 10 > 100 
    end
    a = funcB()
    print(a) -- false
    print(funcB()) -- false
    function funcC()
        return 100,200,"3"
    end
    num3,num4,num5 = funcC()
    print(num3..num4..num5)--1002003
    print(funcC())--100 200 3 --    
    
    num6,num7,num8 = funcC(),1
    print(num6..num7)
    print(num8)
    function  funcD(a,b,c)
        return a + b + c
    end
    result = funcD(1,2,3)
    print(result)
    print(funcD(2,2,8))
    --    >    ,    
    --    
    --       ...
    function  funcE( ... )
        --        (  )
        local args = {...}
        --#:     
        for i = 1 , #args do
            print(args[i])
        end
    end
    funcE(1,2,"Hello",4,5)

    table配列、辞書、ミックス
    --  
    t1 = {"   ","   ","   ","   "}
    print(t1[3])
    --  
    --key     ,     
    t2 = {name="Young",age = 23,sex = "girl"}
    print(t2.name)
    print(t2["name"])
    t2.sex = "boy"
    print(t2.sex)
    --  
    t3 = {name = "AK","   ",age = 35,"   "}
    print(t3.name) --AK 
    print(t3[1])  --   

    遍歴する
    -- paris            
    for key ,value in pairs(t1) do 
        print(key.." : "..value)
    end 
    
    -- ipairs       ,        ,      key   ,
    for key ,value in ipairs(t1) do 
        print(key.." : "..value)
    end