Size: a a a

Генератор непрочитанных сообщений

2020 May 08

AK

Alexander Kladov in Генератор непрочитанных сообщений
Aleksandr Khristenko
Покажи как. Ибо функция такое не может, если нет инлайна.
macros test($someValue) {
 if (...) then return1;
 elseif (...) then return 2;
 elseif (...) then return 3;
}

function test($someValue) {
if (...) then return1;
 elseif (...) then return 2;
 elseif (...) then return 3;
}
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
return test($someValue)
источник

A

Aleksandr Khristenko in Генератор непрочитанных сообщений
Alexander Kladov
macros test($someValue) {
 if (...) then return1;
 elseif (...) then return 2;
 elseif (...) then return 3;
}

function test($someValue) {
if (...) then return1;
 elseif (...) then return 2;
 elseif (...) then return 3;
}
Окей. В случае с макросом
function myfunction() {
 test!(..);
}
возврат будет из myfunction.
В случае с функцией
function myfunction() {
 test(..);
}
возврата не будет.
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
но я могу написать возврат
источник

A

Aleksandr Khristenko in Генератор непрочитанных сообщений
Alexander Kladov
return test($someValue)
Другая семантика, возврат нужен только если выполняются условия. У тебя возврат будет вегда.
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
типа чтобы не городить дополнительные ифы
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
кажется дошло, спасибо
источник

A

Aleksandr Khristenko in Генератор непрочитанных сообщений
Alexander Kladov
типа чтобы не городить дополнительные ифы
Еще есть возможность сделать макрос, который по данным будет генерировать классы, например. Т.е. то, что в рантайме уже не сделать.
источник

A

Aleksandr Khristenko in Генератор непрочитанных сообщений
Плюс можно всякие дсли строить, наверное.
источник

A

Aleksandr Khristenko in Генератор непрочитанных сообщений
Ну и макросы разные бывают. Например в расте есть процедурные макросы(что-то типа наших аннотаций, которые недавно приняли).
Т.е. навешиваем на структуру derive(Hash, Eq) и макрос уже инспектирует структуру и реализует для нее трейты, так что эта структура сможет являтся ключами хешмапы.
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
сколько еще всего интересного оказывается
источник

A

Aleksandr Khristenko in Генератор непрочитанных сообщений
Или друго пример, делаешь derive(Serialize, Deserialize) и генерируются трейты для сериализации/десериализации в разные форматы.
источник

P

Panda🤔 in Генератор непрочитанных сообщений
Aleksandr Khristenko
Ну и макросы разные бывают. Например в расте есть процедурные макросы(что-то типа наших аннотаций, которые недавно приняли).
Т.е. навешиваем на структуру derive(Hash, Eq) и макрос уже инспектирует структуру и реализует для нее трейты, так что эта структура сможет являтся ключами хешмапы.
ты про #[derive()] ?
источник

A

Aleksandr Khristenko in Генератор непрочитанных сообщений
Panda🤔
ты про #[derive()] ?
yep
источник

P

Panda🤔 in Генератор непрочитанных сообщений
крутая тема да
источник

P

Panda🤔 in Генератор непрочитанных сообщений
мне дебаггер нравится
источник

A

Aleksandr Khristenko in Генератор непрочитанных сообщений
Т.е. все это можно сделать и в пыхе, на рефлекшене.
Но, работать это будет в рантайме и ошибки будут ловиться тогда-же.
источник

A

Aleksandr Khristenko in Генератор непрочитанных сообщений
Alexander Kladov
чет не пойму прикол макросов
А чего ты вообще про макросы вспомнил?
источник

AK

Alexander Kladov in Генератор непрочитанных сообщений
Aleksandr Khristenko
А чего ты вообще про макросы вспомнил?
книжку по ерлангу читаю, не понял для чего они
источник

P

Panda🤔 in Генератор непрочитанных сообщений
лучше бы по расту почитал кстати
источник