Lua零碎

  1. 四舍五入取整写法,math.floor(x+0.5)
  2. 保留几位小数且四舍五入,string.format("%0.1f",math.floor( x*10+0.5)/10))
  3. 闭包情况下,调用方法是这样的
function NewCounter(x)
    print(x)
    return function (y)
        print(y)
    end
end

local c1=NewCounter(1)
print(c1)

输出两个结果1,function: 0000024649B00E00,也就是NewCounter方法的输出以及闭包的另一个方法,想要输出闭包的方法,需要这样

function NewCounter(x)
    print(x)
    return function (y)
        print(y)
    end
end

local c1=NewCounter(1)
print(c1(2))

此时输出1,2

  1. 双斜杠“//”为地板除,即先做除法(/),然后向下取整(floor)。至少有一方是float型时,结果为float型;两个数都是int型时,结果为int型。
  2. 当两个原表__index和__newindex分开写的时候,如果__index写在前面,那么__index就不会被调用,同理,如果__newindex写在__index之前,__newindex不会被调用
local tb={}

setmetatable(tb,{__index=function(t,k)
    return "not find"
end})

setmetatable(tb,{__newindex=function(t,k,v)
    local patch="version"
    if k==patch then
        rawset(t,patch,"47")
    else
        rawset(t,k,"6666")
    end
end})
print(tb.we) --输出nil

如果是写在同一个表中,则不影响

local tb={}

setmetatable(tb,{__index=function(t,k)
    return "not find"
end,
__newindex=function(t,k,v)
    local patch="version"
    if k==patch then
        rawset(t,patch,"47")
    else
        rawset(t,k,"6666")
    end
end})

6.当需要require一个模块的时候,可以指定加载模块的路径,package.path返回当前默认路径,可以修改这个路径,比如

package.path="../HelloWorld/?/Hello.lua"
require("src")

此时,加载模块的时候,相当于"src"替换了路径中的问号,模块所在路径变成了"…/HelloWorld/src/Hello.lua"

或者加载指定的lua文件

package.path="../HelloWorld/src/?.lua"
require("Hello")

此时路径是"…/HelloWorld/src/Hello.lua

7.若_ENV置空,就不能从外部访问,比如require
8.在弱引用表中,若指定键为弱引用,只有对象作为键可以从表中被移除,数字和布尔值则不可以,字符串也不可以
9.ipairs会略过非数值索引,pairs不会
10.获取表长时,#不可以获取键值对形式的元素
11.通常,_G和_ENV指向的是同一个表,但是,它们是很不一样的实体,_ENV是一个局部变量,所有对“全局变量”的访问实际上访问的都是_ENV,_G则是一个在任何情况下都没有任何特殊状态的全局变量,_ENV永远指向当前环境,而假设在可见且无人改变过其值的前提下,_G通常指向的是全局环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值