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

时间:2015-06-02 19:25:17

标签: variables lua metasyntactic-variable

我已经在网上和其他地方搜索了一个答案,但所有主题都涉及迭代表格,元表或_,var1 = do_some_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)

我只是想知道是否有时间需要这个_ = some_function()

2 个答案:

答案 0 :(得分:2)

_ = do_some_stuff()没有任何好处,而是使用do_some_stuff()很好并且更容易被接受。当以这种方式使用时,下划线没有任何好处。

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

答案 1 :(得分:2)

在你写的例子中,_毫无意义。通常,如果函数返回多个值,则使用_,并且您不需要所有返回的内容。可以这么说,抛弃变量_

例如:

local lyr, needThis = {}
lyr.test = function()
    local a, b, c;
    --do stuff
    return a, b, c
end

让我们说,对于这样一个返回多个值的函数,我只需要第三个值来做其他事情。相关部分将是:

_, _, needThis = lyr.test()

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