Size: a a a

2019 February 11

m

madeinussr in pro.elixir
я б так делал:

def show(conn, _params) do
  invoice_id = get_session(conn, :invoice_id)
  invoice_access_token = get_session(conn, :access_token)
  do_render(invoice_id, invoice_access_token)
end

а там в do_render матчишь

cond норм тоже, ага
источник

AB

Alex Bubnov in pro.elixir
A1exey Lopatin
Ребят, подскажите по кодстайлу, какой вариант эстетически красивее/лучше?

https://gist.github.com/lyo5ha/0b81f65ca55a2d97ba50f43e052ac53e
а вообще, я предпочитаю такие штуки писать через with
источник

m

madeinussr in pro.elixir
do_render фигово если тот или иной рендер много от чего зависит - тогда будет каша в ф-циях, тут уж cond лучше
источник

m

madeinussr in pro.elixir
Alex Bubnov
а вообще, я предпочитаю такие штуки писать через with
+1, тем более, что там и шаги явно вырисовываются
источник

A

A1exey Lopatin in pro.elixir
да, конд норм.
источник

A

A1exey Lopatin in pro.elixir
спасибо
источник

AB

Alex Bubnov in pro.elixir
источник

AB

Alex Bubnov in pro.elixir
я обычно сразу вторым вариантом пишу, на случай, если захочется ошибки по-разному обрабатывать
источник

A

A1exey Lopatin in pro.elixir
Крутяк, спасибо! (Я, такой, "А что, так можно было?" насчет пайпа в with).
источник

AB

Alex Bubnov in pro.elixir
а вот да, можно было
источник

AB

Alex Bubnov in pro.elixir
я до сих пор не понимаю, почему этого нет в stdlib, но не знаю, как такие обертки(w_nil в примере) правильно называть
источник

AB

Alex Bubnov in pro.elixir
потому что помимо w_nil может быть w_error, примерно такое
def w_error({:error, e}, key), do: {:error, {key, e}}
def w_error({:ok, v}, key), do: {key, v}
источник

AB

Alex Bubnov in pro.elixir
можно сказать, что это реализации "протокола" either для разных типов, с ручным выбором
источник

AB

Alex Bubnov in pro.elixir
ооо. слушайте, а реализовывать протоколы для Tuple можно?
источник

m

madeinussr in pro.elixir
а почему нет?
источник

AB

Alex Bubnov in pro.elixir
а я не задумывался об этом просто
источник

m

madeinussr in pro.elixir
вот простой пример

defmodule StringCharsImplementations do
defimpl String.Chars, for: Tuple do
  def to_string(term) do
    {first, last} = term
    "#{first}..#{last}"
  end
end
end
iex(1)> "#{{1, 2}}"
"1..2"
источник

SK

Simon Khaskelberg in pro.elixir
Кстати можно без дополнительных функций, а с помощью guard это сделать
источник

SK

Simon Khaskelberg in pro.elixir
with invoice_id when not is_nil(invoice_id) <- get_session(conn, :invoice_id)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я тоже не понимаю этой фишки с добавлением error тупла, если он потом не используется
источник