0

我是 Ruby 新手,正在尝试使用 NeoVim/ALE,我也是新手。我来自 Perl,使用的是 syntastic 插件,我试图弄清楚如何最好地设置 NeoVim/ALE/RuboCop。我以前从未使用过除垢剂。

我的困惑源于这段代码:

#!/usr/bin/env ruby

r = Array() # Improper array initialization, should be Array.new()
puts r

运行时,我得到:

Traceback (most recent call last):
        1: from /Users/me/ruby/workshop/dink.rb:3:in `<main>'  
/Users/me/ruby/workshop/dink.rb:3:in `Array': wrong number of arguments (given  
0, expected 1) (ArgumentError)

RuboCop 没有发现这个错误。我打开了 syntastic,它也没有发现错误。我假设是因为它是运行时错误,而不是我认为的编译时错误。ruby -c在脚本上运行也不会产生错误。但也许我错了,没有正确使用语法检查工具。有人可以确认这确实是一个运行时错误并且在执行脚本之前不可能捕获吗?

我还有第二个问题:我需要 Ruby 的语法吗?它还能做 RuboCop 没有做的事情吗?

谢谢。

4

1 回答 1

2

这两个工具都是正确的,因为Array()Kernel.

这意味着这不是语法而是运行时错误,因为该方法至少需要一个参数。

文档

Array(arg) → array 返回argArray.

首先尝试调用to_aryarg然后to_a。如果arg不响应to_aryor to_a,则返回一个Array长度为 1 的包含arg.

于 2018-08-13T15:17:10.300 回答