4

我最近接触了 Computer Craft(Minecraft 的 Mod),您可以使用 lua 对计算机进行编码。

我想进入“水状态”,它会加载“水”,然后将变量设置为“状态”或任何其他单词/字符串,这样我就可以将它用于任何事情。我猜你会称之为参数?

os.run( environment, prgmpath, arguments ) 

不明白什么环境。prgmpath 是水,参数是状态?我只是不确定如何从中抓住这些论点。

所以是的,我很困惑=/

尽力解释它,谢谢,Jazza

在四处寻找之后,我想我找到了答案。

lua water arg1

进入命令行

derp = arg[2]

进入档案?

编辑:在潜伏了一些之后,我发现:

derp = ...
print(derp)

在文件中:

file hi

它打印了你好,所以我想这可行,但我似乎无法再添加 D=

4

1 回答 1

1

os.run 是专门为该 mod 编写的 os 库的扩展。根据wiki上的文档:

  • environment 是为您在 prgmpath 运行的脚本设置状态的元表
  • arguments 是您想要传递给您正在调用的代码的任何内容,该代码位于 prgmpath 的脚本中

所以基本上,如果您设置了一些代码来执行 path/to/file.lua 中的特定操作,但它取决于某些外部状态,您将在调用文件中设置该状态,并传递环境(或它的子集)通过将其作为表传递给 os.run() 中的第一个参数来传递给 file.lua 中的代码。

arguments 应该是您想要传递给您将在 file.lua 中调用的函数的参数表。所以如果在 file.lua 你有......

function doSomething(arg1, arg2, arg3)
    ...
end

您可以通过创建一个表并像这样传递它来将 arg1、arg2 和 arg3 传递给 doSomething...

local args = {"arg1Val", {}, 1234}
os.run({}, '/path/to/file.lua', args)

os.run 然后会在 file.lua 中为函数 doSomething() 设置一个空环境,并将 args 中的 3 个值传递给函数。

说得通?

于 2012-05-14T00:53:12.997 回答