2016-04-07 6 views
-4

|> iksiri ikincisinde ne anlama geliyor?İksirde "|>" nedir?

Bu kod örneğinde, Phoenix tarafından oluşturulan koddan çıkarılan örneklerde, var |> function_call(a,b,c) sözdizimi, var'u bağımsız değişken olarak geçen birden çok işlevi çağırmasına izin veriyor gibi görünüyor, ancak nasıl çalıştığını tam olarak anlamadım.

defmodule HelloPhoenix.PostController do 
    use HelloPhoenix.Web, :controller 

    # ... 

    def update(conn, %{"id" => id, "post" => post_params}) do 
    post = Repo.get!(Post, id) 
    changeset = Post.changeset(post, post_params) 

    case Repo.update(changeset) do 
     {:ok, post} -> 
     render(conn, "show.json", post: post) 
     {:error, changeset} -> 
     conn 
     |> put_status(:unprocessable_entity) 
     |> render(HelloPhoenix.ChangesetView, "error.json", changeset: changeset) 
    end 
    end 

    # ... 
end 

defmodule HelloPhoenix.Post do 
    use HelloPhoenix.Web, :model 

    # ... 

    def changeset(model, params \\ :empty) do 
    model 
    |> cast(params, @required_fields, @optional_fields) 
    end 
end 

cevap

4

Bu Pipeline operatörüdür. Sol tarafın sonucunu alır ve sağ taraftaki ilk argüman olarak sunar.

pratik anlamda

yerine

something_else(another(some(a))) 

b = some(a) 
c = another(b) 
something_else(c) 

veya

yapmanın Sen Bu fonksiyonları bir zincirin bileşimini görselleştirmek için daha iyi bir yoldur

a 
|> some 
|> another 
|> something_else 

yok.

Daha fazla bilgi için: http://elixir-lang.org/getting-started/enumerables-and-streams.html#the-pipe-operator

İlgili konular