Size: a a a

2020 March 24

VA

Vsevolod Avramov in pro.elixir
Подскажите, как можно взять первый элемент из tuple в fn?
Например вместо: fn({a, _, _}) -> ...
источник

LL

Lama Lover in pro.elixir
Disi
последнее на чем я основанно писал это поддержка легаси в Perl
Боже
источник

LL

Lama Lover in pro.elixir
Vsevolod Avramov
Подскажите, как можно взять первый элемент из tuple в fn?
Например вместо: fn({a, _, _}) -> ...
elem({1, 2}, 0) == 1
источник

V

V in pro.elixir
Vsevolod Avramov
Подскажите, как можно взять первый элемент из tuple в fn?
Например вместо: fn({a, _, _}) -> ...
зачем?
источник

VA

Vsevolod Avramov in pro.elixir
V
зачем?
Ну мне приходит массив tuples. И хочу их отфильтровать по первому эл-ту в tuple.
источник

VA

Vsevolod Avramov in pro.elixir
Lama Lover
elem({1, 2}, 0) == 1
Ну это да.. А что-нить типа [a | _] есть?
источник

LL

Lama Lover in pro.elixir
Vsevolod Avramov
Ну мне приходит массив tuples. И хочу их отфильтровать по первому эл-ту в tuple.
Enum.filter(tuples, & match? {1, _}, &1)
источник

VA

Vsevolod Avramov in pro.elixir
Lama Lover
Enum.filter(tuples, & match? {1, _}, &1)
А если в tuple 10 эл-тов, то надо 9 черточек пистаь? {1,_,_,_,_,_,_,_,_,_}?
источник

LL

Lama Lover in pro.elixir
Vsevolod Avramov
А если в tuple 10 эл-тов, то надо 9 черточек пистаь? {1,_,_,_,_,_,_,_,_,_}?
Нет, тогда можешь использовать elem
Но если у тебя в tuple 10 элементов, то ты что-то делаешь не так
источник

LL

Lama Lover in pro.elixir
Есть ещё Record для туплов с псевдо-именованными полями
Типа ты код пишешь и указываешь поля по именам, но в компайле он потом заменится на паттернматчинг
источник

VA

Vsevolod Avramov in pro.elixir
Lama Lover
Нет, тогда можешь использовать elem
Но если у тебя в tuple 10 элементов, то ты что-то делаешь не так
Ну у меня 3 элемента. Я для примера
источник

V

V in pro.elixir
tuples = [
 {:sum, 1, 2},
 {:sqr, 4}
]

def work({:sum, a, b}), do: a + b
def work(_), do: nil

for (t <- tuples), do: work(t)
источник

VA

Vsevolod Avramov in pro.elixir
V
tuples = [
 {:sum, 1, 2},
 {:sqr, 4}
]

def work({:sum, a, b}), do: a + b
def work(_), do: nil

for (t <- tuples), do: work(t)
Вот это интересно. Не подумал. Спасибо
источник

V

V in pro.elixir
но вообще формулировка задачи "приходит массив [разных] туплов, и их надо фильтровать" странная
источник

LL

Lama Lover in pro.elixir
V
tuples = [
 {:sum, 1, 2},
 {:sqr, 4}
]

def work({:sum, a, b}), do: a + b
def work(_), do: nil

for (t <- tuples), do: work(t)
Какое-то странное совмещение for и эрланговского подхода по написанию функций на каждый чих
источник

AB

Alex Bubnov in pro.elixir
Źmićer Rubinštejn
Получается что потом тебе надо attempt pattern match делать
как раз нет, если у тебя в паттерне атомы - это уже existing atom
источник

PG

Pïg Grëënëst in pro.elixir
V
tuples = [
 {:sum, 1, 2},
 {:sqr, 4}
]

def work({:sum, a, b}), do: a + b
def work(_), do: nil

for (t <- tuples), do: work(t)
for x <- ..., match?({:sum, _, _}, x), do: ...
источник

V

V in pro.elixir
как-то так, да
источник

VA

Vsevolod Avramov in pro.elixir
|> Supervisor.which_children()
|> Enum.flat_map(fn({_, pid, _, _}) -> Supervisor.which_children(pid) end)
|> Enum.filter(fn({name, _, _, _}) -> name == MyCustomSupervisor end)

Вот у меня по поводу последнего и возник вопрос. Не очень выглядит fn({name, _, _, _}).
Задача - взять супервизор. У его детей-супервизоров взять только определённых поддетей по имени
источник

VA

Vsevolod Avramov in pro.elixir
источник