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