当参数传递给我的ruby脚本时,为什么会发生错误?

我正在使用来暂停我的脚本的输出,直到用户点击Enter键.如果我没有传递任何参数到我的脚本,那么它的工作正常.但是,如果我传递任何参数到我的脚本,然后死亡与以下错误
ruby main.rb -i
main.rb:74:in `gets': No such file or directory - -i (Errno::ENOENT)
    from main.rb:74:in `gets'
    ...

错误消息显示了我传递给脚本的参数.为什么会看到ARGV?

我使用OptionParser解析我的命令行参数.如果我使用解析!而不是解析(所以它从参数列表中删除它解析的东西),那么应用程序工作正常.

所以看起来像是因为某些原因从ARGV读书.为什么?这是预期的吗有没有办法让它不这样做(gets()没有帮助).

解决方法

Ruby将自动将解析的参数视为文件名,然后打开并读取使输入可用于ARGF($<)的文件.认情况下,从ARGF读取.绕过那个:
$stdin.gets

有人建议您可以使用STDIN而不是$stdin,但通常为better to use $stdin.

另外,从ARGV捕获您想要的输入后,可以使用:

ARGV.clear

然后,如果没有阅读可能无法阅读的文件,您将可以自由获取.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...