draw.RoundedBox(0,0,0,100,100,Color(120,255,120))
end)
我正在观看有关学习Lua的教程,更具体地说,是针对Garry的Mod引擎的Lua。在本教程中,我注意到仅使用'end'无效。我必须将'end)'与')'一起使用。
为什么我必须在此代码的末尾放置一个')'?
答案 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