2017-02-21 46 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 =零在第三测试,可以不调用arr [0],因为nil没有[]方法。你在13号线上的支票应该是if arr == nil