lua一些容易注意点

local和面向对象

local x = {a=1}
x.b = 2     -- 不能加local,否则错误:unexpected symbol near '.'
print(x.b)
local bird = {canfly = true}
function bird:new()   -- 不能加local,理由同上面,作用域在bird
    local b = {}
    setmetatable(b,self)
    self.__index = self
    return b
end 

local ostrich = {}

-- local ostrich = bird:new()  --  new操作创建了一个新的表,这个表检查是否有元表
-- ostrich.canfly = false
print(bird.canfly)
print(ostrich.canfly)

结果:
true
nil

  • 本身ostrich.canfly是没有canfly这个属性的,如果new()之后,如手册所说:metatable允许改变table的行为,例如相加,当试图执行这个操作时,会检查2个表是否有一个表有metatable,并检查是否有__add域,如果找到就调用这个函数去计算结果。

冒号与点号

local obj={x=20}
function obj:fun1()
    print(self.x)
end

obj:fun1()
  • 调用函数obj.fun1()失败,必须用冒号,因为冒号默认接收一个参数self,而点号需要自己显示的传入self参数。

tonumber()和tostring()

local a = tostring(5)
local b = tonumber("a")
print(a)
print(b)
print(a == 5)
结果:
5     -- 一个字符串tonumber()后为nil,一个数字tostring之后值不变,但是不等于原来的值。
nil
false
-- local a1 = true
-- local a2 = ""
-- local a3 = 1
-- local a4 = "a"
-- -- if type(a) == "boolean" then
-- --   print("aaa")
-- -- end

-- print(tonumber(a1))
-- print(tonumber(a2))  --为nil
-- print(tostring(a2))
-- print(tonumber(a3))
-- print(tostring(a4))
nil
nil

1
a
[Finished in 0.1s]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值