Shorthand Elixir Anonymous Functions
Elixir has a really cool syntax for writing anonymous functions (unnamed functions). It goes like this:
# The '&' operator is used to define the function and its arguments
putter = &(IO.puts &1)
putter.("Today I learned")
#...> Today I learned
#...> :ok
&1
refers to the functions first argument; in this example, we used "Today I learned". You can use more arguments with &2
, &3
, etc... For example:
combiner = &(&1 <> &2)
combiner.("Foo", "Bar")
#...> "FooBar"
Also notice that we are not calling either of these functions like function(arg1, arg2)
, instead we are calling them like function.(arg1, arg2)
. We have to use .
because we are not actually naming these functions, we are only assigning them a reference, hence "anonymous" functions.