[英]rspec issue believed to be with gets.chomp call
我在运行时遇到问题或对 rspec 错误感到困惑:
rspec -fd game_spec
(以上只是长错误信息的开始)
当我在没有 -fd 的情况下运行它时,它可以工作……但它看起来很傻……出了点问题。 当我使用gets.chomp 时,我开始收到错误消息,但我查看了使用它的类似示例。 'the_word' 必须在初始化中设置吗? 是gets.chomp还是可以? 我很感激任何帮助。 以下是到目前为止的游戏文件及其 rspec。 我根本不想改变太多。 我只想得到我目前所做的工作并继续努力。 谢谢!
原因是从ARGV
(参数变量)读取,例如您提供给gets
的-fd
rpsec
。
你可以很容易地重现这种情况:
> ruby -e "puts gets.chomp" ASD
-e:1:in `gets': No such file or directory @ rb_sysopen - ASD (Errno::ENOENT)
from -e:1:in `gets'
from -e:1:in `<main>'
您可以通过在调用gets.
之前清除ARGV
来防止这种情况发生。
> ruby -e "ARGV.clear; puts gets.chomp" ASD
asd # <-- I then type this
asd # <-- and this is printed
你不能只说ARGV = []
因为它是一个常量,但是调用clear
很好,因为它没有重新定义变量。
简而言之,只需将其放在gets.chomp
之前的某个位置:
ARGV.clear
这是关于该主题的另一个问题: Ruby readline failed if process started with arguments
我使用$stdin.gets.chomp
,所以代码将是:
game.the_word = $stdin.gets.chomp
根据我的研究, gets.chomp
将首先检查 ARGV 中的内容,如果找不到,它会使用标准输入。 这样做会直接读取用户输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.