Здравствуйте, Khimik, Вы писали:
K>Я скорее непрофессиональный программист, отстал от жизни, поэтому хочу спросить.
K>Меня в Delphi очень злит отсутствие статических классов. Т.е. часто нужна простая запись (record) с возможностью вызвать свою функцию: например у меня есть запись TVector, с тремя компонентами tvector.x, tvector.y, tvector.z, и нужна функция tvector.length. Я одно время пробовал создавать функции со сложными именами, например function tvector_length(var obj:tvector), но как-то это не пошло. Создавать класс tvector — не вариант, поскольку будет тормозить и придётся каждый раз инициализировать и уничтожать этот класс. У record-ов со встроенными функциями были бы две базовые характеристики классов – инкапсуляция и наследования, а уж полиморфизм нужен далеко не всегда.
K>Вот у меня вопрос, насколько всё это решено в более современных ЯП?
не совсем понял суть проблемы
интересует добавление своих функций к уже имеющимся типам?
в с++, для этого есть ADL:
namespace test {
struct vector {
float x,y,z;
};
float length ( vector const & );
}
int main () {
test::vector v;
float d = length( v );
return 0;
}
оно?