Tracks
/
Elixir
Elixir
/
Temario
/
Operador de tubería
Op

Operador de tubería en Elixir

10 ejercicios

Acerca de Operador de tubería

El operador |> se llama el 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 se suelen usar en todas partes sin el nombre del módulo Kernel, pero ese nombre del módulo es necesario cuando se usan esas funciones en una cadena de tuberías. 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 una cuestión de preferencia personal. A algunos desarrolladores de Elixir les gusta seguir estas reglas:

  • No uses el operador de tubería cuando hagas 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ías.

    # 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).()
    
  • Empieza siempre una cadena de tuberías 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 nueva ventana o pestaña

Aprende Operador de tubería

La práctica está bloqueada

Desbloquea 5 ejercicios más para practicar Operador de tubería