forEachField

Mar 03, 2016 21:45

В последнее время выдалось много всякого метапрограммирования ( Read more... )

работа, c++, programming, java

Leave a comment

Comments 3

_winnie March 4 2016, 03:08:07 UTC
> почему в мейнстримовых языках нет

Python и JavaScript программисты на этой фразе напряглись, не перестал ли их язык быть мейнстримовым

Reply

strangeraven March 4 2016, 06:10:12 UTC
Это не языки, это скрипты.

Ну да, наверное стоило уточнить: типизированные мейнстримовые языки. Но вообще говоря, такая фича в принципе возможна только там, где есть типы. В питоне и js её сделать нельзя совсем.

Задача не в том, чтобы просто перебрать ключи строкового словаря, которые живут в скриптах.

Представь, что, например, тебе надо передавать по бинарному протоколу сериализованные сообщения между Python и C++. На обоих языках придется генерить код сериализации, который будет явно, как Папа Карло, выковыривать каждое поле из потока персонально.

Однако как бы выглядело это на C++ с forEachField:

class Serializer {
void serialize( int &a );
void serialize( float &b );
}

struct MyStruct {
int a;
float b;

void serialize(Serializer &serializer ) {
forEachField( (field) -> serializer.serialize(field) );
}
}

Reply


wizzard0 March 7 2016, 13:56:57 UTC
Сюда просится D :)

Reply


Leave a comment

Up