Size: a a a

2021 June 10

LL

Lama Lover in pro.elixir
Не, мне этот at помогал когда, например, нужно опции обрабатывать

Такое типа
{acc, _} =
 {acc, opts}
 |> at({acc, %{zero: true}} -> {[0 | acc], opts})
 |> at({acc, %{one: true}} -> {[1 | acc], opts})
 |> at({acc, %{two: true}} -> {[2 | acc], opts})

Или когда действия с ошибками делаешь в стиле Either

do_something()
|> at({:ok, result} -> do_other(result))
|> at({:ok, result} -> do_another(result))
источник

IK

Ihor Katkov in pro.elixir
Да, тот же with для пайплайна
источник

ŹR

Źmićer Rubinštejn in pro.elixir
У with есть end
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А у at - нету
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Изза этого at и elem превращаются в кашу
источник

ŹR

Źmićer Rubinštejn in pro.elixir
По идее каждый новый |> - этот новая операция логически
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А все at - это логически одна операция
источник

A ß in pro.elixir
можно поменять синтаксис
источник

A ß in pro.elixir
defmacro at(pat, do: body)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Поэтому на первый взгляд выглядит фигово
источник

LL

Lama Lover in pro.elixir
Нет, будет defmacro at(arg, do: [{:"->", _, [pattern, body]}])
источник

A ß in pro.elixir
а почему не defmacro at(arg, pat, do: body)?
источник

LL

Lama Lover in pro.elixir
Ну вот в том-то и дело что не обязательно
Например,

config
|> at(%{notify_user: true} -> notify_user(); config)
|> at(%{notify_admin: true} -> notify_admin(); config)
источник

LL

Lama Lover in pro.elixir
Потому что во всём языке обычно pattern -> body (ну или pattern <- body)
источник

LL

Lama Lover in pro.elixir
И вот тут вот если первый at не выполнится, то второй всё равно может выполниться
источник

A ß in pro.elixir
не показательный пример, такое можно делать и без at
источник

LL

Lama Lover in pro.elixir
Ну да...
источник

LL

Lama Lover in pro.elixir
Блин, из головы вылетели все хорошие примеры с этим at
источник

ŹR

Źmićer Rubinštejn in pro.elixir
at будут использовать как логически одну операцию, а это прям плохо
источник

LL

Lama Lover in pro.elixir
Ну я вообще не к тому что at прям сильно нужен языку, а к тому что он был бы удобнее и круче чем then/tap
источник