Skip to content

Latest commit

 

History

History
42 lines (33 loc) · 855 Bytes

append-to-a-keyword-list.md

File metadata and controls

42 lines (33 loc) · 855 Bytes

Append To A Keyword List

If you have two keyword lists, you can append them like so:

> a = [a: 1]
[a: 1]
> b = [b: 2]
[b: 2]
> a ++ b
[a: 1, b: 2]

But what if something a bit more programmatic is happening and you are building up the additions to the keyword list based on variables?

> x = :x
:x
> c = a ++ [x 5]
** (CompileError) iex:5: undefined function x/1
    (stdlib) lists.erl:1353: :lists.mapfoldl/3
    (stdlib) lists.erl:1354: :lists.mapfoldl/3

That makes elixir think x is some function when in fact it is just a variable containing the keyword :x.

Simply adding a comma doesn't quite do it either.

> c = a ++ [x, 5]
[{:a, 1}, :x, 5]

We need to wrap the internal part with curly braces to create the tuple that can then be appended to a.

> c = a ++ [{x, 5}]
[a: 1, x: 5]