我无法弄清如何将函数调用分配给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"]
使用这段代码,我收到了一个“未初始化常量Foo (NameError)”错误。
最终使用:
def Foo()
puts "bar"
end
puts "Assigning"
test = { "foo" => :Foo }
puts "Executing"
test["foo"]
我没有输出。
有什么建议吗?
感谢所有人的回答和建议。
我要做的是测试一个基于哈希的调用函数的方法是否比基于if
/ case
语句的等效代码更快。
funcs["foo"].call
比
更快if func_name == "foo" then
Foo()
elsif ...
...
end
或者
case func_name
when "foo"
Foo()
when ...
...
end
显然,针对大量函数(约150个)和数百个调用循环。