为什么要将下划线设置为一个函数?

我在这里和其他网站上寻找答案,但所有主题都涉及迭代表、元表或 _,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()

点赞
用户2788177
用户2788177

_ = do_some_stuff() 中没有任何好处,相反,使用 do_some_stuff() 就可以了,而且更被接受。在这种方式中,下划线没有任何好处。

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

2015-06-02 20:45:25
用户4962485
用户4962485

在你所写的示例中,_没有任何意义。通常,如果一个函数返回多个值,你不需要所有返回的东西,那么_就会被使用。可以说,_是一个丢弃的变量。

例如:

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

假设有一个返回多个值的函数,我只需要第三个值来做别的事情。相关的部分将是:

_, _, needThis = lyr.test()

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

2015-06-03 14:33:34