1

这是一大段代码的一个片段:

print "> "
$next_move = gets.chomp

case $next_move.include?
when "instructions"
  puts "$next_move is instructions"
else
  puts "$next_move is NOT instructions"
end

每次我在终端中运行它时,无论我使用的是 ruby​​ 1.8.7、1.9.3 还是 2.0.0,我都会收到以下错误:

test.rb:4:in `include?': wrong number of arguments (0 for 1) (ArgumentError)
from test.rb:4

该代码昨晚在另一台计算机上运行。

不是include?检查那个全局变量的内容吗?我应该向它传递什么其他论点?

我在这里有点难过,特别是因为我所做的只是将代码从一台计算机移动到另一台计算机。

4

2 回答 2

2

http://www.ruby-doc.org/core-1.9.3/String.html#method-i-include-3F

如果 str 包含给定的字符串或字符,则返回 true。

这意味着它只需要 1 个参数,所以难怪在不带参数的情况下调用它会抛出 ArgumentError。

所以代码应该是:

if $next_move.include? 'instructions'
  puts '$next_move is instructions'
else
  puts '$next move is NOT instructions'
end
于 2013-06-08T17:06:36.190 回答
0

您测试的两台计算机之间必须发生一些变化。如果您想将此用作案例陈述,您可能有以下内容:

next_move = 'instructions'

case next_move
when "instructions"
  puts "$next_move is instructions"
else
  puts "$next_move is NOT instructions"
end

这专门测试是否next_move是指令。作为 if/else 语句:

if next_move.include? 'instructions'
  puts "$next_move is instructions"
else
  puts "$next_move is NOT instructions"
end

有关更多信息,请参见eval.in。

于 2013-06-08T17:11:32.397 回答