zoukankan      html  css  js  c++  java
  • LUA学习笔记(第18-20章)

    数学库

    print(math.pi)-->π
    print(math.huge)-->Lua中表示的最大数字

    --[[

    3.1415926535898
    1.#INF

    ]]

    print(math.rad(90))-->转换成弧度
    print(math.deg(math.pi))-->转换成角度


    math.random()用于生成伪随机数

    不带参数,它将返回【0, 1]内均匀分布的伪随机实数

    带参数n(整数),它将返回【1, n】内均匀分布的伪随机整数

    带参数m,n(整数),它将返回【m, n】内均匀分布的伪随机整数

    math.randomseed用于设置伪随机数生成器的种子数

    math.randomseed(os.time())

    math.randomseed(os.time())
    for i=1,5 do
    	print(math.random(6))
    end

    table库

    table是Lua中唯一的数据结构。
    初始化与打印输出
    arr = {}
    for i=1,10 do
    	arr[i] = i * 10
    end
    
    print("the length of arr is " .. #arr)
    for i,v in ipairs(arr) do
    	print("arr[" .. i .. "] = " .. v)
    end
    lines = {luaH_set = 10, luaH_get = 24, luaH_present = 48}
    
    for i,v in pairs(lines) do
    	print(i, v)
    end


    插入
    table.insert(数组, [位置], 数据)
    位置是可选的,不选择则插在数组末尾
    当然在数组起始或中间插入,不是一个好的选择

    删除
    table.remove(数组,[位置])删除数组指定位置上的元素
    位置同样是可选的,没有位置则从尾部删除。

    连接
    table.concat(数组, [分隔符], [起始位置], [终止位置])
    arr = {}
    for i=1,10 do
    	arr[#arr + 1] = i * 10
    end
    
    print(table.concat(arr, " : ", 1, 10))
    遍历嵌套数组
    function printer(arr)
    	if type(arr) ~= "table" then
    		print(arr)
    		return
    	end
    	for i=1,#arr do
    		printer(arr[i])
    	end
    end
    
    s = {{"a", "nice"}, "and", {"long"}, {"day"}}
    --printer(s)
    printer(s)
    function printer(arr)
    	if type(arr) ~= "table" then
    		return arr
    	end
    	local res = {}
    	for i=1,#arr do
    		res[i] = printer(arr[i])
    	end
    	return table.concat(res, " ")
    end
    
    local s = {{"a", "nice"}, "and", {"long"}, {"day"}}
    
    print(printer(s))

    排序
    table.sort( tablename, [sortfunction] )
    sortfunction 可选。
    sortfunction 有两个参数,如果希望第一个参数在排序结果中位于第二个参数面前,就应当返回true。
    如果没有提供这个函数,sort就是用默认的小于操作。
    arr = {10, 20, 50 ,30, 40}
    table.sort(arr)
    print(unpack(arr))
    默认从小到大排序
    等价于:
    function sortfunction(x, y)
    if x < y then
    return true
    else
    return false
    end
    end
    arr = {2, 5, 1, 3, 4}
    table.sort( arr, sortfunction)
    print(unpack(arr))

    lua中无法对table的索引排序,只能将key保存在数组,再对数组排序。
    lines = {
    	luaH_set = 10, 
    	luaH_get = 24, 
    	luaH_present = 48,
    	}
    
    arr = {}
    for key in pairs(lines) do
    	arr[#arr + 1] = key
    end
    
    print(unpack(arr))
    table.sort(arr)
    print(unpack(arr))




    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    flash播放器插件与flash播放器的区别
    FLASH动作脚本详解
    flash代码
    LitJson使用中需要注意的一些问题(转)
    AS3中ASCII码和字符互转函数
    JQuery直接调用asp.net后台WebMethod方法(转)
    C#文件操作
    js延迟执行
    js操作表格、table、
    定时任务、js定时任务
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5834678.html
Copyright © 2011-2022 走看看