0
$array_hash = [
{
first: "John",
last: "Smith",
role: "Boss"
},
{
first: "Jane",
last: "Doe",
role: "Worker"
}]
def find_employees_role(name)
name = name.split(" ")
result = $array_hash.find do | e |
e[:first] == name[0] && e[:last] == name[1] #line16
end[:role]
result ||= "Not available"
end
find_employees_role("Joe Smith") #line 22
find_employees_role("John Smith") #"Boss"
Error: undefined method `[]' for nil:NilClass
(repl):16:in `find_employees_role'
(repl):22:in `initialize'
這是一個哈希數組。紅寶石 - 從.find恢復找不到任何東西
我的目標是寫一個方法,讓我傳似「約翰·史密斯」的名稱作爲參數,並找回那種人,無論是「老闆」或角色「工人」。
如果名字不在數據庫中,我希望它返回「不可用」。
我試着寫在我的
結果|| =「不可用」
的代碼按預期工作時,我的名字傳遞給方法確實存在,但如果我嘗試傳遞一個不在那裏的名字,它甚至沒有做我期望的。相反,它會返回所述的錯誤。
我相信,錯誤來自[0]:被稱爲上的東西是不確定的,因此沒有可用的那些陣列方法[作用]。但是,我不知道如何解決這個問題。
隨意批評我的代碼的任何其他方面並不手頭涉及到的問題。我的耳朵是開放的。
一般來說,'找到做| E | ...結束[鍵]'只是難以閱讀。保存代碼高爾夫的那種快捷方式。 – AShelly
我明白了。非常感謝。哈... –