Use keyword lists for ‘options’-style parameters that contains multiple key value pairs:
def myfunc(arg1, opts \\ []) do
# Function body
endWe can call the function above like so:
iex> myfunc "hello", pizza: true, soda: falsewhich is equivalent to:
iex> myfunc("hello", [pizza: true, soda: false])The argument values are available as opts.pizza and opts.soda respectively.
Other Examples
Ecto’s query language uses this pattern:
query = from p in EctoBlog.Post, where: p.id == post_idYou can probably guess by now, but the above code is actually:
query = from(p in EctoBlog.Post, [where: p.id == 1])Yes, the second parameter of the from function is a keyword list.