"end" 和 "end)" 之间有什么不同?

以前我看过一些脚本教程,在其中使用了 end。但是几页之后,我却发现了一个 end) 而不只是 end。所以我很困惑,这个闭括号是什么意思?

点赞
用户1424244
用户1424244

没有 end) 语法。有 end),它们分别有着自己的意义。end 关闭一个块(由 iffordowhilefunction 开启),而 ) 则关闭由 ( 开始的内容,如括号表达式、参数列表等。你必须在块开启时使用 end,并在使用 ( 开始的位置使用 )

因为在一个表达式中,块只能通过函数出现,所以这两个语法部分可以一起出现,如果一个函数是一个复杂表达式或一个参数列表的一部分。然而,这并没有什么特别的,类似于 end}end] 的东西也可以以相同的方式出现。

local func = function() print("hello") end
string.dump(func)

这与以下代码相同:

string.dump(function() print("hello") end)

endfunction 语法(函数表达式)的一部分,而 )( 语法(函数调用)的一部分。

第一段代码中的第一行也可以这样写:

local func = (function() print("hello") end)

在这里, ) 只是关闭第一个括号,表达式与原始表达式相同。

2018-02-04 12:10:01
用户9335703
用户9335703

我假设你在说的是 ROBLOX 的 Lua 模块化版本,如果是的话,那么 end) 会结束 :connect,例如:

workspace.part.Touched:connect(function(part)
-- 一些代码
end)

如果不是,请参考 llidanS4 的回答。

2018-02-08 23:28:19