Ruby没有将Fixnum隐式转换为String(TypeError)... to_i无法正常工作

时间:2016-06-28 02:44:02

标签: ruby fixnum

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

  

编写一个接受整数num的方法,并返回零和num之间所有整数的总和,直至并包括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。但完全失去了我所遗漏的显而易见的事情。

1 个答案:

答案 0 :(得分:1)

您的错误是尝试添加数字为""的字符串num的结果。

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

纠正第2行说:sum = 0