2017-02-21 6 views
-1
require "test/unit/assertions" 
include Test::Unit::Assertions 

def key_for_min_value(hash) 
    arr = Array.new 
    arr = hash.min_by{ |key,value| value} 
    if arr[0]==nil 
    return nil 
    else return arr[0] 
    end 
end 


assert_equal key_for_min_value({"k" => 2, "h" => 3, "j" => 1}), "j" 
assert_equal key_for_min_value({"o" => 0, "z" => -2, "j" => 1}), "z" 
assert_equal key_for_min_value({}), nil 

Этот код возвращает следующую ошибку.Неопределенная ошибка метода в Ruby 1.9.3

test1.rb: 7: в key_for_min_value': undefined method [] 'для ноль: NilClass (NoMethodError) из test1.rb: 13: в `'

+0

потому что вы пытаетесь вызвать '[]' на 'nil'. это потому, что вы дважды присваиваете 'arr', в последнем утверждении оно становится' nil'. – phoet

+0

, пожалуйста, четко укажите, неспособный понять ваш комментарий – 0sfh

ответ

-1

при обр = ноль в вашем третьем тесте, вы не можете вызов arr [0], потому что nil не имеет метода []. Ваша проверка по строке 13 должна быть if arr == nil.

Смежные вопросы