Передача блока в метод - PullRequest
0 голосов
/ 08 июля 2010

Я пытаюсь понять, как вы передаете блоки в методы.

В основном у меня есть метод, и вместо того, чтобы пользователь написал это:

def user_config
    @config[:config_value] = "what they want"
end

Я бы хотел, чтобы они могли это сделать:

user_config do
    :config_value => "what they want"
end

Но я не знаю, как работать с блоком в методе.

Ответы [ 2 ]

3 голосов
/ 08 июля 2010

Хотя @diegogs прав и его решение будет работать отлично, я бы не стал использовать блоки в таком простом случае.

def user_config(config_hash)
  config_hash.each do |k,v|
    @config[k] = v
  end
end

отлично подойдет

user_config :config_value => "what they want", ...

Как насчет этого?

3 голосов
/ 08 июля 2010

Блоки вызываются с выходом, так что это:

def user_config
    yield.each do |k, v|
        @config[k] = v
    end
end

называется так

user_config do
    {:config_value => "what they want"}
end

должно работать так, как вы хотите. Блок возвращает

{:config_value => "what they want"}

Вы берете каждый ключ в хэше и присваиваете его значение в хэше @config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...