Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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_Metasyntactic Variable - Fatal编程技术网

Variables 为什么将下划线设置为函数?

Variables 为什么将下划线设置为函数?,variables,lua,metasyntactic-variable,Variables,Lua,Metasyntactic Variable,我在这里和网上其他地方搜索了答案,但所有主题都涉及迭代表、元表或\uvar1=do\u some\u stuff()的时间,而这里的情况并非如此 这只是一个不现实的函数,但包含以下示例: function do_some_stuff(data) _ = some_function(data) some_other_code _ = some_other_function(data) end 这难道不等于简单地进入: function do_some_stuff(data

我在这里和网上其他地方搜索了答案,但所有主题都涉及迭代表、元表或
\uvar1=do\u some\u stuff()
的时间,而这里的情况并非如此

这只是一个不现实的函数,但包含以下示例:

function do_some_stuff(data)
    _ = some_function(data)
    some_other_code
    _ = some_other_function(data)
end
这难道不等于简单地进入:

function do_some_stuff(data)
    some_function(data)
    some_other_code
    some_other_function(data)
end
我知道,如果我创建一个这样的基本Lua程序,两个版本的运行方式相同:

function hello(state)
    print("World")
end

function ugh(state)
    _ = hello(state) -- and w/ hello(state) only
end

ugh(state)

我只是想知道是否有一段时间这个
\u=some\u函数()
是必要的?

使用
\u=dou一些东西()
没有任何好处,而使用
dou一些东西()
是可以接受的。以这种方式使用下划线没有任何好处


感谢Etan Reisner和Mud提供的帮助和澄清。

在您编写的示例中,
\uu
毫无意义。通常,如果一个函数返回多个值,并且您不需要所有返回的内容,则使用
\uu
。可以说,丢弃变量
\uu

例如:

local lyr, needThis = {}
lyr.test = function()
    local a, b, c;
    --do stuff
    return a, b, c
end
比方说,对于这样一个返回多个值的函数,我只需要第三个值来执行其他操作。相关部分将是:

_, _, needThis = lyr.test()

needThis
的值将是函数
lyr.test()
中返回的
c
的值

您是否看到过
\uu=some函数()
,或者您是否看到
\uval=some函数()
?因为后者实际上意味着一些东西,而且是必要的。@EtanReisner你完全正确,我理解我会使用后者的时候。不,事实并非如此,但我会更新你的问题。谢谢我想不出任何情况下,
\u=some_function()
是有意义的(这不是perl),但我不能完全肯定地说这是没有意义的(特别是因为我根本没有注意Lua5.2或5.3)。@EtanReisner感谢Etan。从我目前的尝试来看,我看不出有什么不同。但我并没有在座的很多议员那么渊博或经验丰富。谢谢
setmetatable(G,{{uuuuuuNewIndex=function(u,n,v)如果n=''u'然后打印('…')end})
:)我认为唯一的副作用是覆盖全局/upvalue。我看到的代码使用下划线作为法律值。感谢您的示例。我理解你为什么会在你的例子中使用它。如果您从一个函数中接收到许多变量,并且只希望在调用该函数的给定函数中使用特定数量的变量。但是这里发生的事情是,没有为它所在的函数返回变量。它只是触发该函数运行,例如我的帖子中的my
print
。我希望这有意义?哈哈