Показать сообщение отдельно
Старый 17.11.2008, 07:46   #17
oxid
Нуждающийся
 
Регистрация: 20.08.2006
Сообщений: 54
Написано 3 полезных сообщений
(для 4 пользователей)
Re: Как узать объект?

Дык а что говоришь, что не решена?
Прикольно. Но не совсем оптимально. Я что-то подобное делал, только чуть по другому подошел к вопросу. Я функцию представил в виде класса, т.е. класс с одним методом CALL и массивом аргументов. Получается более обьекто-ориентировано. И код проще: имплиментируем нужные действия в наследнике класса функции - инициализировать с внешней функцией экземпляр не надо - просто создаем его и все. Можно еще синглтоном делать - будет типа меньше памяти занимать, но я с этим не заморачивался (там кое-что надо продумывать) и без синглтонов все нормально, если правильно организовать.
И еще насчет оптимизации (блин у тя оптимизировать и оптимизировать - хотел одно сказать, а там не одно):
1) If fields_map.contains( name ) Then - лишнее, сразу юзай fields_map.remove( name ) - лишнего не сотрет. Тоже и для методов. Проверку надо делать если действительно это надо (ну или для дебаг режима с проверкой) - значение возвращать там удален ли действительно или нет, но ИМО эт для отлдки надо обычно.
2) Обращение к динамическим полям и методам:
If methods_map.contains( name ) - не так - ты же дважды по списку проходишь и если он большой, то эт плохо.
Вот оптимальнее:
this = _Method( methods_map.ValueForKey( name ) )
if (this) then this.callback( Self, params );
Проверку на нуль быстрее делать, чем список проходить.
Вроде все
ЗЫ: а простые типы тоже в объекты оборачивал
(Offline)
 
Ответить с цитированием