1

课程、学分和积分是大小相等的 Ruby 数组。

gpa = (([credits, courses, points].transpose.map {|x| x.reduce(:*)}).inject{|sum,x| sum + x }).round(2)

此方法在我尝试运行时提示错误消息。

错误信息:

in 'each': undefined method '*' for nil:NilClass (NoMethodError)
4

1 回答 1

1

从错误信息来看,似乎有些数据是nil.

也许您可以尝试将数据强制为浮点数。

这并不理想,因为您最终可能会出现无声错误,但值得一试。

尝试:

[credits, courses, points].transpose.map {|a| a.map {|n| n.to_f} } .map { |x| x.reduce(:*) } .inject{|sum, x| sum + x} .round(2)

即使是字符串和奇怪的数据,它也适用于我(尽管不兼容的数据只是简单地转换为零,影响数学)。

于 2015-04-27T00:49:09.220 回答