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

问题描述 投票:2回答:2

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

variables lua metasyntactic-variable
2个回答
2
投票

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

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


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()的值。

© www.soinside.com 2019 - 2024. All rights reserved.