为什么我使用'end)'而不是仅使用end |?

时间:2020-04-27 00:51:38

标签: lua

    draw.RoundedBox(0,0,0,100,100,Color(120,255,120))
end)

我正在观看有关学习Lua的教程,更具体地说,是针对Garry的Mod引擎的Lua。在本教程中,我注意到仅使用'end'无效。我必须将'end)'与')'一起使用。

为什么我必须在此代码的末尾放置一个')'?

1 个答案:

答案 0 :(得分:2)

某些功能将其他功能用作参数。

当您看到这样的函数时: hello(param, function(a) print(a) end)

(对不起,不好的例子。此函数实际上没有做任何事情)内部的函数是从hello函数的源内部调用的。

end是内部函数的结尾,而)是第一个函数的参数列表的结尾。


因此,这里有一个名为hook.Add()的函数:

hook.Add("HUDPaint", "DrawMyHud", function()
     draw.RoundedBox(0,0,0,100,100,Color(120,255,120))
end)

,并来自GMOD wiki

hook.Add( string eventName, any identifier, function func )
--Add a hook to be called upon the given event occurring.

尽管我们正在调用一个函数,但是函数在做什么正在用称为钩子的代码创建一个特殊的连接。在事件“ HUDPaint”上,GMOD客户端将调用提供的功能。

编写此函数的另一种方法可以使end)的含义更加明确,即使每个参数成为自己的行:

hook.Add(
     "HUDPaint", 
     "DrawMyHud", 
      function() draw.RoundedBox(0,0,0,100,100,Color(120,255,120)) end --end of function declaration
) --end of hook.Add function call
相关问题