185 похожих чатов

Есть ли способ подставить атом в вызов функции не напрямую,

а через переменную? Типа такого:

Вместо:
my_function(atom1, atom2)
Писать:
A1 = atom1, A2 = atom2, my_function(A1, A2)

13 ответов

23 просмотра

Что ломается, если сделать ровно так, как ты предложил?

Δημήτηρ- Автор вопроса

Кажется, с record_info такое не прокатит, потому что она compile time. Видимо, надо другой вариант просто. А вообще задача была такая: динамически извлекать из рекорда элементы, имея на входе атом-имя.

Δημήτηρ
Кажется, с record_info такое не прокатит, потому ч...

ага. Простые гипотезы проще проверять самому (благо для компиляции и запуска нынче не нужно записываться в очередь к мейнфрейму за неделю), а в вопросе больше говорить о задаче/проблеме. Тебе нужен record_info(fields, my_record), и с ним либо вычисление номера поля, либо постоение проплиста/мапы

Δημήτηρ- Автор вопроса
Δημήτηρ
Кажется, с record_info такое не прокатит, потому ч...

вижу три варианта: 1) использовать maps вместо рекордов; 2) использовать индексы вместо атомов; 3) использовать record_info fields

Δημήτηρ- Автор вопроса
Sergei
вижу три варианта: 1) использовать maps вместо рек...

От рекордов уже не уйти, придется весь модуль для этого переписать. Буду дальше мучить record_info)

Δημήτηρ
От рекордов уже не уйти, придется весь модуль для ...

так говорите, будто у вас там 10 тысяч строк

Δημήτηρ- Автор вопроса
Sergei
так говорите, будто у вас там 10 тысяч строк

Да нет, модуль маленький. Просто не вижу пока повода отказаться доделать на record_info.

Δημήτηρ
Да нет, модуль маленький. Просто не вижу пока пово...

всё правильно. нужно доделать, потом сделать второй вариант и написать бэнч

Sergei
вижу три варианта: 1) использовать maps вместо рек...

> maps вместо рекордов отличный путь к провалу в стиле «перепутал два стейта местами, и сломалось очень неявно через 5 запросов, два часа дебажил»

Δημήτηρ
От рекордов уже не уйти, придется весь модуль для ...

чё там мучить то, сделай поиск по чату R2M - однострочкик преобразования рекорда в мапу, из неё бери всё что хочешь по ключу

Danil Zagoskin
> maps вместо рекордов отличный путь к провалу в...

можно сделать такое: {:my_tag, map()} будет похоже на эликсировский struct, только лучше. И стейты не перепутаешь )

Юрий Жлоба
можно сделать такое: {:my_tag, map()} будет похоже...

что в свою очередь будет совместимо с -record(my_tag, {fields = #{}}). А потом можно наиболее нужные в стектрейсе поля (id подключения, например) вынести в рекорд, чтобы быстрее искать глазами в стектрейсте

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта