2017-02-21 65 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

相關問題