【问题标题】:Table with methods, how to handle/inspect them?带有方法的表,如何处理/检查它们?
【发布时间】:2016-06-10 18:35:33
【问题描述】:

所以没有上下文,我有一个返回表的方法。 试着打印出来,好像表主要包含要调用的方法。 但是对 LUA 不是很了解,我不知道如何正确获取有关我应该调用的这些方法的一些信息。

我试图从事物的创建者那里获取文档,但据我所知没有。而且由于这是在computercraft(minecraft mod)内部,所以我也没有很多可以依赖的功能。

所以只知道它是一个包含我可以调用的方法的表,我如何正确地弄清楚如何调用它们,以及使用什么参数等?

【问题讨论】:

  • 正如其他人回答的那样,就 Lua 而言,函数是您可以调用的值。每次调用它时,都可以传递任意数量的任意类型的参数。由函数来理解或拒绝传递的内容。然后,每次调用它时,它可以根据传递的内容或外部状态(同一张表中的兄弟值、星期几、文件的存在......)返回任意数量的任何类型的值。由调用者来理解返回值。它还可以改变外部状态。了解如何使用函数及其作用的唯一方法是文档。

标签: lua lua-table computercraft


【解决方案1】:

一般来说,模块/库总是附带文档,或打印文档的方法。

但如果不是这样,你可以这样做:

  • 您可以打印表格中的所有内容!这是必须的,方法的名称可能非常有用
  • 你可以寻求帮助!找到使用过相同模块的人,并询问他们是如何工作的。为什么要解决其他人已经发现的问题?
  • 使用debug.getinfo 和其他用于调试库的 hacky 函数!与 Lua 标准库中的任何其他内容相比,它们可以提供更多信息
  • C 端编码可以揭示 Lua 无法揭示的东西!如果您可以访问 C 端,您可以确切地看到代码在做什么(或者至少我认为是这样)
  • 查看源代码!这向您展示了代码的作用以及它是如何工作的
  • 最重要的是,实验!尝试不同参数、不同值的方法,并通过持续测试确定它的作用!

【讨论】:

    【解决方案2】:

    仅知道方法的名称不足以知道如何调用它们。

    他们的名字可能是一个线索,但不能保证。

    如果方法是用 Lua 编写的,您可以使用调试 API 来发现参数的名称,这可能只是指示如何调用方法。

    底线:您需要文档或示例代码。

    【讨论】:

    • 可悲的是,我只是弄乱了只有文档功能。
    【解决方案3】:

    我知道它存在,但不知道它是如何工作的。因此,以供将来参考: 您可以通过在 minecraft 聊天中执行 /op_dump 来转储外围设备和方法。

    这会生成一个 XML,它会写出它在外围设备或对象/表中找到的所有方法。

    这意味着您必须调用每个有趣的方法一次,这会生成表作为返回。然后调用 /op_dump 将包含新遇到的对象以及有关方法/参数等的所有信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 2011-01-08
      • 1970-01-01
      • 2011-07-06
      • 2011-12-24
      相关资源
      最近更新 更多