我一直致力于代码战争挑战,我想提交它,我的代码在repl.it中工作并传递所有测试但是当我在codewars shell中运行它时我得到了这个错误:
queue_time': undefined method `max' for nil:NilClass (NoMethodError)
from `block in'
from `block in describe'
from `measure'
from `describe'
from `'
这是代码:
def queue_time(customers, n)
total_queue = []
i = 0
while i < n
total_queue << [customers[i]]
i += 1
end
open_queue_index = total_queue.index {|x| x == total_queue.min}
k = n
while k < customers.length
array_summed = []
total_queue[open_queue_index] << customers[k]
total_queue.each_index do |index|
array_summed << total_queue[index].reduce(:+)
end
open_queue_index = array_summed.index {|x| x == array_summed.min}
k += 1
end
array_summed.max
end
为什么Codewars不会理解.max
方法?
答案 0 :(得分:0)
array_summed
未初始化。
while false
array_summed = [] # initialized
end
array_summed # is nil because it was never initialized.
```
答案 1 :(得分:0)
如果customers
数组为空,您的方法将会中断。如果该数组为空,则该方法永远不会进入while k < customers.length
块,并且永远不会初始化array_summed
。
然后在最后一行,array_summed.max
基本上就像说nil.max
。
您是否在repl.it和codewars中传递了不同的customers
数组?如果您在代码表中测试的数组为空,那么这将会中断。