lua中的 “:“ 号 调用 和 pcall函数 调用

@ lua中的 “:” 号 调用 和 pcall函数 调用

个人在此分享一下新学lua的 遇到的两个非常简单的小坑, 简单,但是却让人抓狂,可能是因为太不起眼了所以导致网上没有太多关于其的资料


“:” 号定义 与 "."调用

这是很多初学lua时都会犯的错误,但是由于非常微小,不起眼所以很可能会被忽略, 因此而耽误很长时间 代码片.

-- 函数定义 " : "
function Person:talk(words)
    print(self.name .. ", 说 : " .. words);
end
// 函数调用
Person.talk(self,9); √
Person.talk(9); ×
Person:talk(9); √
Person:talk(self,9); ×
-- 其实此时只要看一看 error 提示: attempt to index local 'self' (a number value)非常的明显了
-- =============================================================
--  函数定义 " . "
function Person.say(words)
    print("mm, 说 : " .. words);
end
// 函数调用
Person.say(9); √
Person.say(self,9); ×
Person:say(9); ×
Person:say(self,9); ×



那么 以".“定义 以”:"调用 也如此, 因此 在编写lua时 最好就是 以 ":“定义 以”:"调用

原因:

在 lua中 “:” 号的作用 就是在定义函数的时候 默认第一个参数是 self 也就是自己,
在使用":“号调用函数的时候 就是 传入当前调用此函数的 本身, 关于”:"的含义网上有大把, 此处不多解释

如果在使用 “:” 号 定义函数时 如果使用 “.” 来调用 那么 第一个参数就是 self,



pcall 捕捉异常

虽然lua 作为一款嵌入式脚本,很多时候都无需lua来处理异常,但是 lua 官方还是提供了 pcall,

相信不少 人 在调用函数的时候习惯性加()一对小括号,但是如果在 使用 pcall函数时 加一对小括号 就会发现 …
代码片.

function bug()
    error("有错误");
end
local a, p = pcall(bug());
print(a, p);
// 以上的错误写法: 在使用 pcall调用函数的时候千万不要 写成
pcall(bug());  ×
如果写成上述写法 ,错误还是会抛出
如果要拦下错误的正确写法是:
pcall(bug);// 

好了,祝你学习lua顺利

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值