Kurzusok
/
Elixir
Elixir
/
Tanterv
/
Csőoperátor
Cs

Csőoperátor ebben a kurzusban: Elixir

10 feladat

A(z) Csőoperátor fogalomról

A |> operátor neve pipe operátor. Segítségével úgy fűzhetsz össze függvényhívásokat, hogy az előző függvényhívás visszaadott értéke a következő függvényhívás első argumentumaként adódjon át.

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

# versus

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

Egyetlen sorban is használható:

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

A Kernel függvényeit általában mindenhol a Kernel modulnév nélkül használjuk, de a pipe-láncban ezeknél a függvényeknél szükség van a modulnévre. Például a 2 * 3 == 6 így is felírható:

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

Ízlés kérdése, hogy mikor használod a pipe operátort és mikor nem. Néhány Elixir-fejlesztő szereti követni ezeket a szabályokat:

  • Ne használd a pipe operátort, ha csak egyetlen függvényhívást végzel.

    # do
    String.split("hello", "")
    
    # don't
    "hello" |> String.split("")
    
  • Ne hozz létre névtelen függvényeket közvetlenül a pipe-láncban.

    # 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).()
    
  • A pipe-láncot mindig változóval vagy literál értékkel kezdd, ne függvényhívással.

    # do
    "hello" |> String.upcase() |> String.split("")
    
    # don't
    String.upcase("hello") |> String.split("")
    
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Csőoperátor fogalmat

A gyakorlás zárolva

Oldj fel még 5 feladatot, hogy gyakorolhasd a(z) Csőoperátor fogalmat