Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/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
试图理解Lua的简单代码_Lua_Lua Table_Lua Patterns - Fatal编程技术网

试图理解Lua的简单代码

试图理解Lua的简单代码,lua,lua-table,lua-patterns,Lua,Lua Table,Lua Patterns,我和Lua有点麻烦。问题是:有些Lua代码我知道它们是做什么的,但我不理解它们,所以如果教授让我解释它们,我就无法做到。 你能帮我吗 我知道这段代码将整数部分与小数部分分开,但我不理解“(%d*)(.?*)$”部分 int, dec = string.match(tostring(value), "(%d*)(%.?.*)$") 此代码将文本文件中的所有数据插入表中,该文本文件是按照以下模型编写的{name=“John”,age=20,sex=“Male”)。我不明白的是,我如何知道函数加载

我和Lua有点麻烦。问题是:有些Lua代码我知道它们是做什么的,但我不理解它们,所以如果教授让我解释它们,我就无法做到。 你能帮我吗

  • 我知道这段代码将整数部分与小数部分分开,但我不理解
    “(%d*)(.?*)$”
    部分

    int, dec = string.match(tostring(value), "(%d*)(%.?.*)$")
    
  • 此代码将文本文件中的所有数据插入表中,该文本文件是按照以下模型编写的{name=“John”,age=20,sex=“Male”)。我不明白的是,我如何知道函数加载需要哪些参数?最后一个参数
    entry=entry
    ,我不知道我是否理解了它的确切含义:我想它从文件中获取
    文本作为一段Lua代码,输入后的所有内容都被发送到
    函数项中,插入它在桌子上,对吗

    function entry(entrydata)
        table.insert(data, entrydata)           
    end
    
    thunk = load(text_from_file, nil, nil, {entry = entry})
    thunk()
    

  • 就是这样。如果可能的话,请帮助我理解这两段Lua代码,我需要展示整个程序的运行情况,如果教授问我代码,我想确定所有的事情。

    对于第一个问题,你需要了解一些和

    模式
    (%d*)(.?*)$
    由两个较小的模式组成。
    %d*
    %。?*
    。最后的
    $
    仅表示要在字符串
    到字符串(值)
    结束之前进行匹配。
    %d*
    将匹配0个或更多的数值并存储结果(如果找到,否则为nil)t变量
    int

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


    同样,对于第二个代码段,请浏览参考。您的文件中有以下文本:

    entry {name = "John", age = 20, sex = "Male")
    
    这相当于执行名为
    entry
    的函数,其中参数(注意,我使用的是参数而不是参数)是一个表,如下所示:

    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
    的变量,该变量实际上是函数
    myownformationname