范围参数错误中的错误值 - 关于 ruby 中的范围构造

bad value in range argument error - regarding range construction in ruby

我写了以下片段。

def add_me(num)
    result = 0
    (1..num).each { |i| result += i}
    result
end
puts add_me(STDIN.gets)

我收到一个参数错误 list_sum.rb:6:in 'AddMe': bad value for range (ArgumentError) # 行与我编辑器中的 # 行相对应。

我也尝试过 foo = (1..num).to_a 之类的东西。但仍然收到相同的错误。到底是怎么回事? Ruby 版本 2.3.3。我错过了什么?我应该可以在范围内使用变量,不是吗?

gets returns 一个字符串。您需要执行 gets.to_i,以便将输入转换为您的数字范围内的数字。现在你正试图建立一个范围,其中开始是数字 1,结束是一些字符串,这就是引发 ArgumentError.

另外,ruby 惯例会告诉您您的函数应该命名为 add_me。 Ruby 使用蛇形大小写,任何以大写字母开头的内容通常被假定为 class 或常量(常量全部大写)。