Lua 中是否有一种变量可以包含多个可接受的值?

对 Lua 还是比较新。

我想使用以下代码,因为它似乎最简单:

local IsJobs = {
  "job1",
  "job2",
  "job3"
}

我原以为可以使用 or 运算符,但实际上并不是我所想的那样。

这三个值都可以同时为 true。它们不一定都存在,但其中任何一个可以被接受为 true 以允许访问。但是,另外两个在其中一个被使用后必须保持为 true。

但我似乎无法使其工作。我已经尝试了一些方法,但始终失败。程序可以加载和运行,但可能会在第一个字符串处停止,不会读取下一行,或根本不会读取它们。教程似乎没有说过我可以这样做,但当我尝试使用一个函数时,它也无法读取字符串。如果我将该函数放在在线 Lua 编译器中并告诉它打印,它将打印名称或表名称,但它不会读取表格内部的内容。

它有三种用途。

if localxPlayer.job.name ==  IsJobs then

while localxPlayer.job.name == IsJobs do

function IsMechanic()
  return localxPlayer.job.name == IsJobs
end

任何帮助都将不胜感激。

点赞
用户2858170
用户2858170
`localxPlayer.job.name == IsJobs`

`localxPlayer.job.name` 是一个字符串(我猜的)。`IsJobs` 是一个表。因此,这个表达式将始终计算为 `false`。

`localxPlayer` 不是一个很好的名称。看起来你忘记了空格,本意是写 `local xPlayer`。由于大多数值在 Lua 中都是局部的,如果可能的话,我宁愿对全局名称使用前缀。

正如 Nifim 在她的评论中建议的那样,你可以使用以下代码:

local IsJobs = { job1 = true, job2 = true, job3 = true, }


然后 `IsJobs["job2"]` 为 `true`。

或者你可以这样做:

local IsJobs = {"job1", "job2", "job3"}

local jobInList = false for i,v in ipairs(IsJobs) do if localxPlayer.job.name == v then jobInList = true end end

```

2020-07-05 07:47:13