课程,学分和积分是大小相等的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)
根据错误消息,似乎某些数据为nil
。
也许您可以尝试将数据强制为浮点型。
这并不理想,因为您可能最终会遇到无声错误,但值得一试。
尝试:
[credits, courses, points].transpose.map {|a| a.map {|n| n.to_f} } .map { |x| x.reduce(:*) } .inject{|sum, x| sum + x} .round(2)
即使对于字符串和奇怪的数据,它也对我有用(尽管不兼容的数据会简单地转换为零,从而影响数学)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句