2015-02-23 10 views
13

Czytam przez jakiś Code eliksiru na github i widzę |> wykorzystywane są często. Nie pojawia się na liście operation na stronie dokumentacji. Co to znaczy?Co oznacza "|>" w eliksiru?

tj

expires_at: std["expires_in"] |> expires_at, 
+1

W IEX można użyć 'h |>/2', aby zobaczyć swoją dokumentację. Działa dla dowolnego operatora binarnego 'h ++/2',' h +/2', operatorów jednoargumentowych 'h -/1' lub zwykłych funkcji' h is_atom'. –

Odpowiedz

14

To pipe operator. Z połączonych dokumentów:

Ten operator wprowadza wyrażenie po lewej stronie jako pierwszy argument wywołania funkcji po prawej stronie.

Przykłady

IEX>[1, [2], 3] |> List.flatten()

[1, 2, 3]

Powyższy przykład jest taki sam, jak wywoływanie List.flatten([1, [2], 3]).

2

Poza doskonałą odpowiedzią Stefana, może chcesz przeczytać sekcję o nazwie „Pipeline Operator” tego blog posting dla lepszego zrozumienia przypadku użycia że operator rurociągu przeznaczonego do zajęcia w Elixir. Ważna koncepcja jest następująca:

Operator rurociągu umożliwia łączenie różnych operacji bez użycia zmiennych pośrednich. . Kod może łatwo być , a następnie odczytać go od góry do dołu. Mijamy stanu poprzez różnych przekształceń, aby uzyskać pożądany efekt, każdy transformację powracającego trochę zmodyfikowaną wersję państwa.

11

daje możliwość uniknięcia złego kodu:

orders = Order.get_orders(current_user) 
transactions = Transaction.make_transactions(orders) 
payments = Payment.make_payments(transaction, true) 

sam kod operatora za pomocą rurociągu:

current_user 
|> Order.get_orders 
|> Transaction.make_transactions 
|> Payment.make_payments(true) 

przyjrzeć funkcji Payment.make_payments istnieje drugi parametr bool, jeśli był to pierwszy parametr podobny do tego:

def make_payments(bool_parameter, transactions) do 
    //function 
end 

to by już nie działało.

przy opracowywaniu aplikacji eliksir pamiętać, że ważne parametry powinny być w pierwszej kolejności, w przyszłości będzie to daje możliwość korzystania z operatorem rurociągu.

nienawidzę to pytanie podczas pisania non kod eliksir: co należy nazwać tę zmienną? Tracę mnóstwo czasu na odpowiedź.