Size: a a a

2020 May 16

V

V in pro.elixir
Alexander Kladov
всем привет. только изучаю эликсир, возникли вопросы, если кто-то поможет разобраться буду рад.
1. лямбда вызывается через точку перед скобками. как я понял для того,  чтобы визуально отлично лямбду от обычной функции. а для чего это нужно отличать?
2. не понял с чем связано ограничение в объявлении 1 структуры для 1 модуля.
3. нормальная ли это практика иметь несколько модулей(или других единиц кода, типа протоколов, имплементаций протоколов) внутри одного файла?
2 и 3 - про то, чтобы легче находить файл по названию модуля.
Иногда я делаю так:
defmodule FooCommand do
 use Typedstruct

 defmodule InputArgs
   typedstruct ... # описание структуры
 end
 
 defmodule OutputDto
   typedstruct ... #
 end

 # имплементация FooCommand
end
источник

AK

Alexander Kladov in pro.elixir
V
2 и 3 - про то, чтобы легче находить файл по названию модуля.
Иногда я делаю так:
defmodule FooCommand do
 use Typedstruct

 defmodule InputArgs
   typedstruct ... # описание структуры
 end
 
 defmodule OutputDto
   typedstruct ... #
 end

 # имплементация FooCommand
end
ага, выше уже подсказали про такой вариант, спасибо
источник

AK

Alexander Kladov in pro.elixir
Lama Lover
3. Эликсир многое взял из эрланга, а в эрланге модуль = файл
понял, спасибо
источник

NB

Nikita Babushkin in pro.elixir
Привязки к файлам вроде как нет
 iex> defmodule Foo, do: defstruct [:bar]
по идее вполне легальная история
источник

RP

Roman Pushkov in pro.elixir
ну да, можно вообще весь проект написать одной строкой в одном файле
источник

RP

Roman Pushkov in pro.elixir
названия модулей и файлов — лишь конвенция
источник

AD

Anastasiya Dyachenko in pro.elixir
V
Котаны, кто работал с bamboo. Есть ли способ в  dev-режиме сохранять отправляемые письма на диск как eml-файлы? Или может есть какой-то другой способ посмотреть исходящие? Может быть есть способ научить bamboo работать с sendmail (sendmail легко подменяется на скрипт, сохраняющий исходящие в файлы)?
источник

AD

Anastasiya Dyachenko in pro.elixir
Михаил Лёсин
могу заменить на if, это я просто перебирал варианты пока искал почему не компилится, поэтому там конд, а так там и case был, и if :)
но принципиально в читаемости это же мало что поменяет
Я периодически использую inline if в with, выглядит более менее
источник

IK

Ihor Katkov in pro.elixir
источник

IK

Ihor Katkov in pro.elixir
норм статья
источник

GI

Gleb Ivanov in pro.elixir
Gleb Ivanov
У меня одного бомбит от Map.size/1 is deprecated. Use Kernel.map_size/1 instead?
Давайте теперь все функции из протокола Enum в Kernel перенесем
источник

NB

Nikita Babushkin in pro.elixir
Gleb Ivanov
Давайте теперь все функции из протокола Enum в Kernel перенесем
Если я ничего не путаю, то это из эрланга приехало, а не выдумалось для эликсира. Я про map size
источник

LL

Lama Lover in pro.elixir
Классная статья
источник

V

V in pro.elixir
Да, в браузере можно смотреть.
источник

AK

Alexander Kladov in pro.elixir
почему может такая ошибка выводится? я что-то совсем не понимаю
(ArgumentError) invalid arguments for use, expected a compile time atom or alias, got: ExUnit.case


имеется тест файл с 1 ассертом assert true. и только проблема с 1 проектом
источник

AK

Alexander Kladov in pro.elixir
defmodule TodoListTest do
 use ExUnit.case
 doctest TodoList

 test "test" do
   assert true
 end
end
источник

AK

Alexander Kladov in pro.elixir
сам тест файл
источник

PG

Pig Greenest in pro.elixir
ExUnit.Case
источник

AK

Alexander Kladov in pro.elixir
фейспалм
источник

AK

Alexander Kladov in pro.elixir
спасибо большое
источник