Как передать анонимную функцию в трубу в Эликсире

Я хотел бы написать код следующим образом:

def boundary do
  :crypto.rand_bytes(8)
  |> Base.encode16
  |> &("--------FormDataBoundary" <> &1)
end

Но это не сработает.

Ответ 1

Он будет выглядеть немного странно, но должен работать:

def boundary do
  :crypto.rand_bytes(8)
  |> Base.encode16
  |> (&("--------FormDataBoundary" <> &1)).()
end

Ответ 2

Связано: если для переменной была назначена "анонимная" функция, вы можете сделать ее так:

def boundary do
  add_marker = fn (s) ->
    "--------FormDataBoundary" <> s
  end

  :crypto.rand_bytes(8)
  |> Base.encode16
  |> add_marker.()
end