gpt4 book ai didi

lua - Lua表属性误解的基本示例

转载 作者:行者123 更新时间:2023-12-02 01:32:29 24 4
gpt4 key购买 nike

我正在尝试创建一些简单的变量,可用于比较游戏中 Sprite 的当前方向并获得相反和相邻的方向。这样,如果玩家的方向通过 direction=U 设置为 U,那么我可以访问 direction.opposite 来获取 D

这个例子清楚地表明我还没有理解 Lua 101,但我很好奇是否以及如何获得我想要的功能。当然,我可以用字符串替换值并与名称进行比较,但是有没有一种方法可以保留我的预期功能,而无需诉诸字符串比较(甚至在其位置比较数字),我认为与仅检查表地址相比,这会影响性能.

U, D, R, L  = {},{},{},{}
U = {opposite = D, adjacent = {R,L},name = 'up'}
D = {opposite = U, adjacent = {R,L},name = 'down'}
R = {opposite = L, adjacent = {U,D},name = 'right'}
L = {opposite = R, adjacent = {U,D},name = 'left'}

print(U.opposite.name)

当我希望打印“向下”时,这里打印打印“nil”

最佳答案

This example clearly shows i havent understood Lua 101 but I'm intrigued if and how I can get the functionality I want.

可以简单地通过不用新表替换表,而是分配给它们来修复代码(这实际上是创建Lua 中的圆表引用结构;仅使用表构造函数是行不通的):

U, D, R, L  = {name = "up"},{name = "down"},{name = "right"},{name = "left"}

U.opposite = D; U.adjacent = {R,L}
D.opposite = U; D.adjacent = {R,L}
R.opposite = L; R.adjacent = {U,D}
L.opposite = R; L.adjacent = {U,D}

print(U.opposite.name)

按预期打印down

Sure, I can replace the values with strings and compare to names but is there a way to preserve my intended functionality without resorting to string comparisons (or even comparing numbers in their place) which i suppose suffer a performance compared to checking just the table address.

我不明白你的意思。 Lua 中的所有字符串都被保留,使得字符串比较引用在恒定时间内运行的比较。数字比较显然也是恒定时间。表格比较只是比较引用文献。因此,这三者应该花费大致相同的恒定时间。

关于lua - Lua表属性误解的基本示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72965921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com