技术疑问:"end"与"end)"的区别是什么?
关于脚本中
end与end)的区别 首先,这种差异几乎肯定和代码块的包裹与闭合逻辑有关,我来给你拆解清楚:
单纯的
end,一般是用来闭合脚本语言自带的结构化代码块,比如:- 在Lua里闭合
if/while/for这类控制结构,或者普通的函数定义 - 在Ruby里闭合
do...end形式的代码块、类定义、方法定义
举个Lua的直观例子:
if score > 90 then print("优秀") end -- 这里的end单纯负责闭合if结构- 在Lua里闭合
而
end)里的右括号,是用来闭合前面包裹代码块的左括号,最常见于匿名函数(lambda表达式)的定义+立即调用场景:
还是拿Lua举例,当你把匿名函数用括号包裹、准备立刻执行时,就会写成这样:-- 用括号包裹匿名函数,end之后的)用来闭合前面的左括号 (function() print("这是一个立刻执行的匿名函数") end)() -- 最后的()是调用这个函数再比如Ruby里的类似写法:
(lambda do puts "Ruby的匿名函数调用示例" end).call -- end后面的)闭合包裹lambda的左括号
简单总结:end负责闭合语言本身的结构化代码块,而end)里的)是补全代码块外部的括号包裹——前面有个未闭合的(,自然要在end之后加)来完成语法配对。
内容的提问来源于stack exchange,提问作者Shyvha
相关产品推荐
相关产品推荐

