Size: a a a

Эликсир и Вунш

2021 May 06

АН

Александр Ниткин... in Эликсир и Вунш
Не вру гуглил потом брал примеры и переделывал по своему.
источник

V

V in Эликсир и Вунш
do и end - это аналоги { и } из других языков
function blabla(a) {
  print a;
}


def blabla(a) do
 IO.puts a
end
источник

АН

Александр Ниткин... in Эликсир и Вунш
А почему, где-то встречается do: а где-то просто do
источник

V

V in Эликсир и Вунш
def blabla(a), do: IO.puts a
источник

АН

Александр Ниткин... in Эликсир и Вунш
Понял спасибо
источник

PT

Pavel Tsiukhtsiayeu in Эликсир и Вунш
do .... end и do: ... взаимозаменяемы. В итоге компилятором в одинаковое AST собирается. В неокторых случаях однострочная нотация лучше читается. Например

if a do
 b
else
 c
end


можно свернуть в if a, do: a, else: c
источник

V

V in Эликсир и Вунш
потому что синтаксис эликсира - гомоиконичен
т.е. def - это вызов макроса
blabla(a) - первый аргумент
а вот дальше передаётся хэшмапа из параметров. do .. end - это развёрнутый вариант короткой формы
фактически семантика такая
def blabla(a), %{do: IO.inspect(a)}
или если полностью
def (blabla, [a], %{do: IO.inspect(a)})
как defmacro в лиспах

аналогично работает
if something, then: a, else: b
это по сути
if something, %{then: a, else: b}
или
if (something, %{then: a, else: b})
источник

PT

Pavel Tsiukhtsiayeu in Эликсир и Вунш
ты не прав насчет Map. Должно быть Keyword: if(something, [then: a, else: b])
источник

V

V in Эликсир и Вунш
да, мог ошибиться, keyword list, а не map
источник

jj

ja ja in Эликсир и Вунш
Лучшее враг хорошего
источник
2021 May 08

АН

Александр Ниткин... in Эликсир и Вунш
Как вывести отдельный элемент в массиве, попытался свой сделать вариант пока не очень list = ["a","b","c"]
c=Enum.at(list,2)
for ff <-c  do
 IO.puts(ff)
end
источник

A

Anton in Эликсир и Вунш
А для чего for?
источник

АН

Александр Ниткин... in Эликсир и Вунш
Хотя я и Enum.each делал одинаково.
источник

jj

ja ja in Эликсир и Вунш
Это если без отп тогда нужен фор.  Мож я и не прав. Но я что-то ни разу им не пользовался. Проблема ВСЕХ языков, в том что есть несколько способов заговнокодить что либо. И, лично я считаю, что не все эти способы надо знать. Голова не резиновая.
источник

АН

Александр Ниткин... in Эликсир и Вунш
Нечего не понял, извините)
источник

jj

ja ja in Эликсир и Вунш
OTP - это всякие протоколы, типа Enum, Map. Библиотека. Если ее бы не было то без for было бы плохо. А так - норм.
источник

АН

Александр Ниткин... in Эликсир и Вунш
Код все равно не работает, что не так list = ["a","b","c"]
c=Enum.at(list,2)
Enum.each(c, fn x ->IO.puts (x) end)
источник

A

Anton in Эликсир и Вунш
Попробуй просто IO.puts(c)
источник

АН

Александр Ниткин... in Эликсир и Вунш
Когда я не могу понять list = ["a","b","c"]
c=Enum.at(list,2) IO.puts (x)
 так код работает,  или к примеру когда мы просто выводим list = ["a","b","c"] Enum.each(list, fn x ->IO.puts (x) end) тоже работает list = ["a","b","c"]
c=Enum.at(list,2)
Enum.each(c, fn x ->IO.puts (x) end)
а так нет. Я даже создал пустой массив c=[] Я выгляжу может глупо, но хочу понять что не так ?
источник

ДС

Дмитрий Свидерский... in Эликсир и Вунш
А что по-вашему делает Enum.at ?
источник