为什么包含?抛出参数错误?

时间:2013-06-08 16:57:24

标签: ruby arguments

这是来自更大块代码的片段:

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?检查该全局变量的内容?还有什么其他的论据可以传递给它?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在您测试此功能的两台计算机之间必须进行一些更改。如果您想将其用作案例陈述,您可能会遇到以下问题:

next_move = 'instructions'

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

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

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

有关详细信息,请参阅eval.in