Просто используйте предоставленное вами определение:
def function_name(options = {})
puts options["key1"]
end
Назовите его с помощью:
function_name "key1" => "value1", "key2" => "value2"
или
function_name({"key1" => "value1", "key2" => "value2"})
Array # extract_options! просто используется с методами, которые имеют переменные аргументы методов, например:
def function_name(*args)
puts args.inspect
options = args.extract_options!
puts options["key1"]
puts args.inspect
end
function_name "example", "second argument", "key1" => "value"
# prints
["example", "second argument", { "key1" => "value" }]
value
["example", "second argument"]
Другой полезный метод - Hash # symbolize_keys! , который позволяет вам не заботиться о том, передаете ли вы строки илисимволы для вашей функции, чтобы вы всегда могли получить доступ к таким вещам options[:key1]
.