0

我写了以下片段。

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。但仍然收到相同的错误。到底是怎么回事?红宝石版本 2.3.3。我错过了什么?我应该能够在范围内使用变量,不是吗?

4

1 回答 1

2

gets返回一个字符串。您需要这样做gets.to_i,以便将输入转换为您的数字范围的数字。现在,您正在尝试创建一个范围,其中开始是数字 1,结束是一些字符串,这就是提高ArgumentError.

另外顺便说一句,ruby 约定会告诉你你的函数应该命名为add_me. Ruby 使用蛇形大小写,任何以大写字母开头的内容通常被假定为类或常量(常量全部大写)。

于 2018-12-24T02:42:54.237 回答