У меня есть этот рабочий код:
class Server
def handle(&block)
@block = block
end
def do
@block.call
end
end
class Client
def initialize
@server = Server.new
@server.handle { action }
end
def action
puts "some"
end
def call_server
@server.do
end
end
client = Client.new
client.call_server
Мой сервер будет обрабатывать более одного действия, поэтому я хочу изменить код таким образом:
class Server
def handle(options)
@block = options[:on_filter]
end
def do
@block.call
end
end
class Client
def initialize
@server = Server.new
my_hash = { :on_filter => action }
@server.handle(my_hash)
end
def action
puts "some"
end
def call_server
@server.do
end
end
client = Client.new
client.call_server
Это неправильный код, потому что метод action() вызывает создание my_hash, но если я попытаюсь изменить код на:
my_hash = { :on_filter => { action } }
Я получаю сообщение об ошибке.
Можно ли создать хеш с помощью методов как хэш-значений?