这是来自更大块代码的片段:
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?
检查该全局变量的内容?还有什么其他的论据可以传递给它?
我有点难过,特别是因为我所做的只是将代码从一台计算机移到另一台计算机上。
答案 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。