vida tutorial sinonimo programación lenguaje learn inmortal framework elixir

tutorial - Cómo pasar una función anónima a la tubería en Elixir



elixir tutorial (3)

Me gustaría escribir el código así:

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

Pero no funciona.


La respuesta aceptada funciona, pero puede hacerlo de forma un poco más elegante usando

(&"--------FormDataBoundary#{&1}").()

en lugar de

(&("--------FormDataBoundary" <> &1)).()

Aquí está la función completa:

def boundary do :crypto.strong_rand_bytes(8) |> Base.encode16() |> (&"--------FormDataBoundary#{&1}").() end

Bonus: También he reemplazado :crypto.rand_bytes/1 (que no existe en elixix 1.6+) con :crypto.strong_rand_bytes/1 .


Relacionado: si la función "anónima" se ha asignado a una variable, puede canalizarla de esta forma:

def boundary do add_marker = fn (s) -> "--------FormDataBoundary" <> s end :crypto.rand_bytes(8) |> Base.encode16 |> add_marker.() end


Se verá un poco raro pero debe funcionar:

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