我無法弄清楚如何將函數調用分配給紅寶石散列。 我想要做的是將函數分配給散列鍵,然後 使用經典散列查找語法調用此函數。Ruby:如何將函數映射到散列
def Foo()
puts "bar"
end
puts "Assigning"
test = { "foo" => Foo() }
puts "Executing"
test["foo"]
此代碼失敗,函數foo是puts "Assign"
後調用,哈希在創建過程中和之後puts "Executing"
def Foo()
puts "bar"
end
puts "Assigning"
test = { "foo" => Foo }
puts "Executing"
test["foo"]
與此代碼我收到uninitialized constant Foo (NameError)
什麼也沒有發生。
最後用
def Foo()
puts "bar"
end
puts "Assigning"
test = { "foo" => :Foo }
puts "Executing"
test["foo"]
我得到不輸出。
有什麼建議嗎?
感謝大家的回答和建議。
我現在要做的是測試 如果基於哈希方法調用函數比 基於if
/case
語句的等效代碼更快。
funcs["foo"].call
fatser比
if func_name == "foo" then
Foo()
elsif ...
...
end
或
case func_name
when "foo"
Foo()
when ...
...
end
顯然,對於一個大的數目的函數(〜150)和數百 主叫週期
一個快速的建議 - 沒有定義功能與標題案例; Ruby會期望它是一個常量而不是一個函數。 – Simon