Tracks
/
Elixir
Elixir
/
Temario
/
Operador pipe
Op

Operador pipe en Elixir

10 ejercicios

Acerca de Operador pipe

El operador |> se llama operador de tubería. Se puede usar para encadenar llamadas a funciones de manera que el valor devuelto por la llamada anterior se pase como primer argumento a la siguiente llamada a función.

String.replace_suffix(String.upcase(String.duplicate("go ", 3)), " ", "!")

# versus

"go "
|> String.duplicate(3)
|> String.upcase()
|> String.replace_suffix(" ", "!")

También se puede usar en una sola línea:

"go " |> String.duplicate(3) |> String.upcase() |> String.replace_suffix(" ", "!")

Las funciones de Kernel normalmente se usan en todas partes sin el nombre del módulo Kernel, pero ese nombre hace falta cuando usas esas funciones en una cadena de tubería. Por ejemplo, 2 * 3 == 6 también se puede escribir así:

2 |> Kernel.*(3) |> Kernel.==(6)

Cuándo usar el operador de tubería y cuándo no es cuestión de preferencia personal. A algunos desarrolladores de Elixir les gusta seguir estas reglas:

  • No uses el operador de tubería cuando haces una sola llamada a función.

    # do
    String.split("hello", "")
    
    # don't
    "hello" |> String.split("")
    
  • No crees funciones anónimas directamente en la cadena de tubería.

    # do
    take_n_letters = fn n -> Enum.take(?a..?z, n) end
    2 |> Kernel.*(3) |> take_n_letters.()
    
    # don't
    2 |> Kernel.*(3) |> (fn n -> Enum.take(?a..?z, n) end).()
    
  • Comienza siempre una cadena de tubería con una variable o un valor literal, no con una llamada a función.

    # do
    "hello" |> String.upcase() |> String.split("")
    
    # don't
    String.upcase("hello") |> String.split("")
    
Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Operador pipe

La práctica está bloqueada

Desbloquea 5 ejercicios más para practicar Operador pipe