运行时遇到问题或者与rspec错误混淆:
rspec -fd game_spec
(以上只是长期恐怖信息的开头)
当我在没有-fd的情况下运行它时,它可以工作......但它看起来很傻......有些事情是错的。当我使用gets.chomp时,我开始收到错误消息,但我查看了使用它的类似示例。 'the_word'是否必须在初始化时设置? gets.chomp还是可以吗?我感谢任何帮助。下面是游戏文件及其rspec到目前为止。我根本不想改变太多。我只想得到我迄今为止所做的工作并不断推进。谢谢!
答案 0 :(得分:2)
原因是gets
从ARGV
(参数变量)读取,例如您-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>'
您可以在致电ARGV
gets.
,以防止这种情况发生
> 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 fails if process started with arguments
答案 1 :(得分:0)
我知道这个问题已经回答。我也是Ruby的新手,但本教程使用的是这种方式。它使用了$stdin.gets.chomp
因此您的代码将为game.the_word = $stdin.gets.chomp
根据我的研究,gets.chomp
将首先检查ARGV中的内容,如果找不到,则使用标准输入。这样做将直接读取用户输入。 :)