『Programing in Lua』第3部CH 18-CH 19

3931 ワード


CH 18:数学ライブラリ
  • 三角:sin,cos,tan,asin,acos(アーク単位でdegとradで角度とアークを変換できます)
  • 指数と対数:exp,log,log 10
  • 取整:floor(下)、ceil(上)
  • 最値:max,min
  • 生成擬似乱数:random,randomseed
  • 変数:pi,huge

  •  
     
     
    CH 19:tableライブラリ
  • 認知点:tableのインデックスをソートできません!Luaではtableは無秩序であり,配列の本質はtableであり,もちろん無秩序である.
  • 2 2つの質問:
  • tableの元の順序?
  • pairsとipairsの違いは、配列に対してなぜipairsを使用しなければならないのですか?
  • の2つの難点:
  • 本中table.sort()反復器の例
    tLines = {
    luaH_set = 10,
    luaH_get = 24,
    luaH_present = 48
    }

    function pairsByKey(t, f) --f
    local a = {}
    for n in pairs(t) do a[#a + 1] = n end
    table.sort(a, f)
    local i = 0
    return function()
    i = i + 1
    return a[i], t[a[i]]
    end
    end

    for name, line in pairsByKey(tLines) do
    print(name, line)
    end

  • 本中table.concatの拡張例
    --          
    --

    function rconcat(l)
    if type(l) ~= "table" then return l end
    local res = {}
    for i = 1, #l do
    res[i] = rconcat(l[i])
    end
    return table.concat(res)
    end

    t = { { "a", {" nice"} }, " and", { {" long"}, {" list!"} } }
    print(rconcat(t))

  • 4個の関数
  • table.insert
  • table.remove
  • table.sort
  • table.concat