Ruby 没有将 Fixnum 隐式转换为字符串(TypeError)...to_i 不工作

Ruby no implicit conversion of Fixnum into String (TypeError)... to_i not working

我正在学习 Ruby 并尝试解决以下挑战:

Write a method that takes in an integer num and returns the sum of all integers between zero and num, up to and including num.

我想出了:

def sum_nums(num)
    sum = ""
    num = num.to_i
    if num > 0
        while num > 0
            sum = sum + num
            num = num - 1
        end
    end
    if num == 0
        sum = 0 
    end
    if num < 0
        while x < 0
            sum = sum + num
            num = num + 1
        end
    end
    return sum 
end

第 6 行出现 Fixnum 字符串错误,我无法自行解决问题。我尝试将 num 转换为整数,尽管这对我来说没有意义,因为我已经编写了不需要 to_i 的类似方法。但是完全迷失了我所缺少的显而易见的东西。

您的错误是由于尝试添加字符串 "" 和数字 num

与尝试转换类型的 JavaScript 不同,Ruby 不允许您将不同的类型与数学运算符一起使用(除非它们是数字,例如浮点数或整数)。

将第 2 行更正为:sum = 0.