Подтвердить что ты не робот

Что означает "|>" в эликсире?

Я читаю код кода elixir на github, и я часто вижу |>. Он не отображается в списке

4b9b3361

Ответ 1

Это оператор . Из связанных документов:

Этот оператор вводит выражение в левой части в качестве первого аргумента вызова функции в правой части.

Примеры

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

[1, 2, 3]

Приведенный выше пример совпадает с вызовом List.flatten([1, [2], 3]).

Ответ 2

он дает вам возможность избежать неправильного кода следующим образом:

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

тот же код с использованием оператора конвейера:

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

Посмотрите на функцию Payment.make_payments, есть второй параметр bool, если это первый параметр:

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

он больше не работал.

при разработке приложения эликсира учитывайте, что важные параметры должны быть на первом месте, в будущем это даст вам возможность использовать оператора трубопровода.

Я ненавижу этот вопрос при написании неэликсирного кода: что я должен назвать эту переменную? Я трачу много времени на ответ.

Ответ 3

В дополнение к отличному отклику Stefan, вы можете прочитать раздел "Оператор трубопровода" этой публикации блога для лучшего понимания вариант использования, который оператор трубопровода предназначен для адресации в Эликсире. Важная идея такова:

Оператор трубопровода позволяет комбинировать различные операции без использования промежуточных переменных.,. Код может быть легко за которым следует чтение сверху вниз. Мы передаем состояние через различные преобразования для получения желаемого результата, каждое преобразование возвращая некоторую измененную версию состояния.