5

以下代码的语法无效:

# bad_code.rb
def foo
  next
end

$ ruby bad_code.rb 
bad_code.rb:2: Invalid next
bad_code.rb: compile error (SyntaxError)

但是,运行ruby -c bad_code.rb并没有检测到任何问题:

$ ruby -c bad_code.rb 
Syntax OK

然而ruby -c应该用于检查语法:

-c 只检查语法

为什么它没有检测到这个错误?

rubocop bad_code.rb也没有检测到这一点:

$ rubocop bad_code.rb 
Inspecting 1 file
.

1 file inspected, no offenses detected

我在 Ruby 2.1.10 上运行了这个。

4

1 回答 1

5

它在语法上是正确的,但是当 ruby​​ 解释器尝试为它生成代码时,它会识别出没有目标next

于 2016-05-06T08:33:03.417 回答