gpt4 book ai didi

lua - 试图理解 Lua 简单代码

转载 作者:行者123 更新时间:2023-12-02 01:49:04 25 4
gpt4 key购买 nike

我在使用 Lua 时遇到了一些问题。问题是:有些 Lua 代码我知道它们的作用但我不理解它们,所以如果教授让我解释它们,我将无法做到。你能帮我解决这个问题吗?

  1. 我知道这段代码将数字的整数部分与小数部分分开,但我不明白 "(%d*)(%.?.*)$" 部分。

    int, dec = string.match(tostring(value), "(%d*)(%.?.*)$")
  2. 此代码将文本文件中的所有数据插入表中,文本文件是按照此模型编写的 entry {name = "John", age = 20, sex = "Male")。我不明白的是我怎么知道函数加载需要什么参数?还有最后一个参数entry = entry,我不知道我是否理解了它的确切含义:我认为它获取text_from_file作为一段Lua代码以及它的所有内容entry 被发送到 function entry 后,将其插入到表中,对吗?

    function entry(entrydata)
    table.insert(data, entrydata)
    end

    thunk = load(text_from_file, nil, nil, {entry = entry})
    thunk()

就是这样。如果可能的话,请帮助我理解这两段 Lua 代码,我需要展示整个程序的工作原理,如果教授问我关于代码的问题,我想确定一切。

最佳答案

第一个问题,你需要稍微了解一下lua patternsstring.match .

模式 (%d*)(%.?.*)$ 由两个较小的组成。 %d*%.?.*。末尾的$仅仅表示匹配到字符串tostring(value)结束。 %d* 将匹配 0 个或更多 数值 并将结果(如果找到,否则为 nil)存储到变量 int

%.? 匹配文字 . 字符。 ? 表示 . 可能存在也可能不存在。 .* 匹配所有内容并将它们存储到 dec 变量中。


同样,对于第二个代码段,请通过 load()引用。您的文件中有以下文本:

entry {name = "John", age = 20, sex = "Male")

相当于执行一个名为entry的函数,带有参数(注意我用的是parameter而不是parameters)一个表,如下:

entry( {name = "John", age = 20, sex = "Male") )

load 的最后一个参数定义了加载字符串的环境。通过传递 {entry = entry},您定义了一个环境,在该环境中您有一个名为 entry 的函数。为了更好地理解它,请查看以下部分中的更改:

function myOwnFunctionName(entrydata)
table.insert(data, entrydata)
end

thunk = load(text_from_file, nil, nil, {entry = myOwnFunctionName})

现在,传递给 load 的自定义环境将有一个名为 entry 的变量,它实际上是函数 myOwnFunctionName

关于lua - 试图理解 Lua 简单代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23879598/

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