Я не могу понять, как назначить вызов функции хэшу 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
толстее
if func_name == "foo" then
Foo()
elsif ...
...
end
или
case func_name
when "foo"
Foo()
when ...
...
end
Очевидно, для большого количества функций (~ 150) и сотен
циклы вызова