Ну да, наверное стоило уточнить: типизированные мейнстримовые языки. Но вообще говоря, такая фича в принципе возможна только там, где есть типы. В питоне и js её сделать нельзя совсем.
Задача не в том, чтобы просто перебрать ключи строкового словаря, которые живут в скриптах.
Представь, что, например, тебе надо передавать по бинарному протоколу сериализованные сообщения между Python и C++. На обоих языках придется генерить код сериализации, который будет явно, как Папа Карло, выковыривать каждое поле из потока персонально.
Однако как бы выглядело это на C++ с forEachField:
class Serializer { void serialize( int &a ); void serialize( float &b ); }
Comments 3
Python и JavaScript программисты на этой фразе напряглись, не перестал ли их язык быть мейнстримовым
Reply
Ну да, наверное стоило уточнить: типизированные мейнстримовые языки. Но вообще говоря, такая фича в принципе возможна только там, где есть типы. В питоне и 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
Reply
Leave a comment