我偶尔看到begin...end在红宝石中使用没有任何块rescue,else,ensure,等语句之间.例如:
foo = begin
whatever = 3
"great"
42
end
Run Code Online (Sandbox Code Playgroud)
看起来编码器的意图是将begin...end块用于其块分组质量(就好像begin是do).就个人而言,我认为这种用法违反了最少惊喜的原则(begin暗示对我的异常处理).
begin...end以这种方式使用是否会产生任何意想不到的后果?做begin...end块有任何语义差异(也许在异常处理?),使这种用法很危险吗?
Ruby的语法令人难以置信的微妙,如果有一些奇怪的陷阱在这里等待,我也不会感到惊讶.
ruby ×1