Как мне получить ссылку на метод?
Вы можете сделать это с помощью method лямбда-выражений, сохранив references при этом возможность изменять hashing поведение в подклассах:
class X
def initialize
@map = {}
setup_map
end
private
def setup_map
@map["a"] = lambda { |a| a(a) }
@map["b"] = lambda { |a| b(a) }
@map["c"] = lambda { |a| c(a) }
end
public
def call(a)
@map["a"].call(a) if a > 10
@map["b"].call(a) if a > 20
@map["c"].call(a) if a > 30
end
def a(arg)
puts "a was called with #{arg}"
end
def b(arg)
puts "b was called with #{arg}"
end
def c(arg)
puts "c was called with #{arg}"
end
end
ruby
methods
hash
reference
2021-12-14T02:45:35+00:00
2022-09-19T09:03:39+00:00
PorlaZumo
Вопросы с похожей тематикой, как у вопроса:
Как мне получить ссылку на метод?
Предупреждение о файлах Cookies
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.