ruby - 范围值错误

标签 ruby variables loops range

当我运行以下代码时:

def db(y)
  return self % y == 0
end

puts "To number:"
n = gets.chomp

for i in 1..n
  if i.db(3)
    puts "Fizz!"
    if i.db(5)
      puts "FIZZBUZZ!"
    end
  elsif i.db(5)
    puts "Buzz!"
  else
    puts i
  end
end

我收到“范围值错误”错误。为什么会发生这种情况我该如何解决?将变量用于某些值的正常范围可以完美地工作,包括 for 循环,为什么this 不起作用?

注意:我希望 for 循环保留为 for 循环。

最佳答案

只需按照以下步骤操作即可:

n = gets.chomp.to_i

gets.chomp 将为您提供 String 实例。您需要将其设为 Fixnum。否则 1.."4" 例如不是有效范围。所以错误 “范围的错误值”错误。 String#to_i是你的 friend 。

2.0.0p0 :001 > 1.."2"
ArgumentError: bad value for range
    from (irb):1
    from /home/kirti/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'
2.0.0p0 :002 > 1..2
 => 1..2 
2.0.0p0 :003 > 

关于ruby - 范围值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066787/

相关文章:

r - 长变量名是否会降低 r 中的性能?

variables - 口齿不清;符号和全局变量

ruby - Ruby 中的 to_s 与 to_str(以及 to_i/to_a/to_h 与 to_int/to_ary/to_hash)

javascript - 为什么 jslint 更喜欢在 javascript 中拆分变量声明?

html - 使用ruby处理html表单提交以修改服务器上的本地文件

java - Java中轮流使用按钮

java - 哪里写 '{'或者i++;否则会产生以下结果?

python - 我可以改进当前的 Python 代码吗?

Ruby 文档丢失的东西

ruby - Bash 命令在启动时找不到 rvm,Mint