У меня есть функция, которая выглядит примерно так.
def test(options \\ []) do
# Fun stuff happens here :)
end
Он принимает несколько (необязательных) аргументов ключевого слова, включая do:
. Я хотел бы иметь возможность называть это так.
test foo: 1 do
"Hello"
end
Однако это дает ошибку.
** (UndefinedFunctionError) function Example.test/2 is undefined or private. Did you mean one of: * test/0 * test/1 Example.test([foo: 1], [do: "Hello"]) (elixir) lib/code.ex:376: Code.require_file/2
Как видно из ошибки, приведенный выше синтаксис разделяет на два отдельных списка ключевых слов. Теперь я могу вызвать эту функцию, используя следующий немного неудобный синтаксис
Example.test foo: 1, do: (
"Hello"
)
но есть ли способ предоставить блок do
в дополнение к другим аргументам ключевого слова в одном вызове функции?