Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 一个变量具有多个可接受值。这在卢阿可能吗?_Variables_Lua - Fatal编程技术网

Variables 一个变量具有多个可接受值。这在卢阿可能吗?

Variables 一个变量具有多个可接受值。这在卢阿可能吗?,variables,lua,Variables,Lua,对Lua来说很陌生 我想用什么,因为它看起来最简单 local IsJobs = { "job1", "job2", "job3" } 我原以为我可以用or,但这并不像我想象的那样有效 这三者可以同时成立。它们都不需要存在,但它们中的任何一个都可以被接受为真实的,以允许访问。但其他人在使用一个后必须保持真实 但我似乎无法让它工作。我已经尝试了一些方法来实现这一点,但我总是空出来。程序加载

对Lua来说很陌生

我想用什么,因为它看起来最简单

local IsJobs = {
      "job1",
      "job2",
      "job3"
      }
我原以为我可以用or,但这并不像我想象的那样有效

这三者可以同时成立。它们都不需要存在,但它们中的任何一个都可以被接受为真实的,以允许访问。但其他人在使用一个后必须保持真实

但我似乎无法让它工作。我已经尝试了一些方法来实现这一点,但我总是空出来。程序加载并运行,但要么在第一个字符串处停止,不读取下一个字符串,要么根本不读取它们。教程似乎没有说我可以,但当我尝试使用函数时,它也不会读取字符串。如果我把函数放在在线Lua编译器中并告诉它打印,它将打印名称或表名,但它不会在表中读取

有三种使用方法

if localxPlayer.job.name ==  IsJobs then

while localxPlayer.job.name == IsJobs do

function IsMechanic()
return localxPlayer.job.name == IsJobs
end
非常感谢您的帮助。

您好 是的,这就是卢亚的桌子。而不仅仅是多个可接受的值。它可以保存任何类型的数据


让我们来展示一个简单的例子

科伊斯·卢阿

local koys = {}
function koys.gauss(f)
 return ( ( f * f + f ) / 2 )
end
function koys.shell(shell)
if ( type(shell) == 'string' ) then
 os.execute(shell)
else
 os.execute('/bin/sh')
end
end
return koys
这是一张桌子。在其他语言中称为:数组

我推荐Lua5.3控制台解释器用于学习table的概念是如何工作的

localxPlazer.job.name
是一个字符串(我猜)
IsJobs
是一个表。因此,此表达式的计算结果总是
false

localxPlayer
不是一个很好的名字,顺便说一句。看起来你忘记了一个空格,打算写
localxPlayer
。由于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

lua中是否不允许缩进?请在大括号、函数和结束之间缩进任何内容,以及其他任何地方=更容易阅读-对您和我们来说-理解并可能提供帮助。据我所知,Lua不关心缩进,但我缩进了表@iAmOrenI中的变量,我将重新缩进所有。。。我很高兴Lua和大多数其他语言不关心缩进,因为缩进不会影响它们。但是,我、你和可能的回答者不是计算机。缩进将有助于我们所有人——包括您——在阅读旧代码/其他人的代码时——这是一种良好的做法。查找惯例,选择一个,根据自己的口味进行修改(如果你愿意),并尝试坚持下去。关于你的问题-很抱歉我帮不了你。这里不需要缩进。行数很少,如果您不懂该语言,缩进行将无济于事。请使用set,然后执行
IsJobs[localxPlayer.job.name]
作为您的条件。为什么要使用quote来格式化您自己的文本?你的例子有什么意义?您将演示如何编写带有一些函数的Lua模块以及如何使用它。当OP询问如何在表中查找值时。。。这个答案对我来说毫无意义,我在标题中问了这个问题。我不想纠正这个例子的错误。关于Lua,表的概念是非常重要的。(删除错误的引语)回答-是-对此表示抱歉。我定义了一个空表,并用函数填充它,最后它自己作为全局表中的另一个表返回。这就更清楚了。
local IsJobs = {
    job1 = true,
    job2 = true,
    job3 = 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