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。我看到的代码使用下划线作为法律值。感谢您的示例。我理解你为什么会在你的例子中使用它。如果您从一个函数中接收到许多变量,并且只希望在调用该函数的给定函数中使用特定数量的变量。但是这里发生的事情是,没有为它所在的函数返回变量。它只是触发该函数运行,例如我的帖子中的myprint
。我希望这有意义?哈哈