找回密码
 register

QQ登录

只需一步,快速开始

查看: 1123|回复: 0

[游戏教程] LUA常见错误:全局变量的滥用、使用 == 比较函数和表、错误的使用 coroutine.yield

[复制链接]

[游戏教程] LUA常见错误:全局变量的滥用、使用 == 比较函数和表、错误的使用 coroutine.yield

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
12364
Waylee 2023-6-14 09:24 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

Lua编程之旅:最后的挑战

Lua的冒险还没有结束,我们将面对一些新的挑战。让我们一起去解决它们。

错误11:全局变量的滥用

在Lua宇宙中,全局变量就像宇宙中的无尽之空,它们无处不在,而局部变量则像具体的星球。如果你不小心,可能会无意中创建一个全局变量。

function spaceship:launch()
speed = 1000 -- Oops! This is a global variable
end


要避免这种情况,你应该使用local关键字来声明局部变量。

function spaceship:launch()
local speed = 1000 -- Correct. This is a local variable.
end


错误12:使用 == 比较函数和表

在Lua宇宙中,函数和表就像宇宙中的独一无二的实体,它们是按引用比较的,而不是按值比较。这意味着即使两个函数或表看起来完全一样,但只要它们位于内存中不同的位置,==就会认为它们是不等的。

local function greet()
print("Hello")
end

local anotherGreet = function()
print("Hello")
end

print(greet == anotherGreet) -- prints false, even though the functions do the same thing


这一错误经常会困扰新手,因为他们预期==会比较函数或表的内容,而不仅仅是它们在内存中的位置。

错误13:错误的使用 coroutine.yield

协程是Lua宇宙中的强大工具,但是如果不正确使用,会引发错误。例如,你不能在主线程中调用 coroutine.yield。

coroutine.yield() -- error: attempt to yield from outside a coroutine


正确的使用方式是在协程中调用coroutine.yield。

function myCoroutine()
print("Coroutine started")
coroutine.yield()
print("Coroutine resumed")
end

co = coroutine.create(myCoroutine)
coroutine.resume(co) -- prints "Coroutine started"
coroutine.resume(co) -- prints "Coroutine resumed"
您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-20 04:43 , Processed in 0.097572 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表