|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.09.2009, 09:56 | #1 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Как лучше перегружать стандартные функции?
И нужно ли это вообще? В моем интерпретаторе подошел вопрос к использованию функций, расклад следующий: имеет некоторое количество встроенных функций (ну вроде как модуль System в Делфи) + программист может создавать свои (что естественно). Теперь я встал перед выбором: давать ли программисту право переопределять действия имеющихся стандартных функций или нет? И второй вопрос: если будет иметься такая возможность то как отобразить это в синтаксисе? То есть либо просто написать свою функцию с таким именем и числом параметров либо еще в конце указывать какой-либо признак, ну вроде:
Код:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
20.09.2009, 10:14 | #2 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Я считаю, что лучше позволить программисту давать функциям любые имена, замещая встроенные. Большая свобода действий - большая привлекательность.
В синтаксисе это по идее не должно проявляться, так как имена функций просто заместят стандартные, НО для следующего проекта они должны вернуться на место, ибо программист должен будет знать, что делает его функция в данный момент - стандартная она или его. А еще наверное лучше будет в интерфейсе забить что-нибудь типа радиогроуп - там добавить кнопку адд - при нажатии дается возможность добавить свой вариант функи. А в гроупе программист будет выбирать - какой модуль применять для данного проекта.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
20.09.2009, 10:19 | #3 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Ну это понятно, ведь в следующем проекте не будет нового кода стандартных функций, в таком случае будут использоваться встроенный вариант.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
20.09.2009, 10:25 | #4 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Я бы наверное сделал бы вот так:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
20.09.2009, 11:33 | #5 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
А почему не использовать стандартные и всем понятные решения - пространства имен или их вариант - указание модуля в Delphi. Причем, количество параметров может не совпадать.
Код:
|
21.09.2009, 06:52 | #6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Ну можно и так, есть ли еще какие варианты?
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
21.09.2009, 08:12 | #7 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
А почему не ООП Way ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
21.09.2009, 08:52 | #8 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Я считаю, что ООП, конечно модно, но помимо решения многих задач, также подкидывает еще огромную кучу, в результате чего и возникли - шаблоны, RTTI (до этого оно конечно тоже нужно было, но не так чтобы очень ), множественное наследование, преобразование типов и пр. в том же духе. Поэтому и изобретаю велосипед на лыжах и с парусом .
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
21.09.2009, 08:53 | #9 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
Может я ошибаюсь. а почему бы не пойти по пути С++.
Где функция перегружается и есть два варианта. 1. Перегруженная функция определяется типами и числом входных параметров, типа - сложение вещественных чисел - сложение целых - сложение строк и пр. 2. В зависимости от не явного контекста (глобальный модуль или локальный, доступность и пр.) определяется вызов функции. При этом определения функций могут совпадать и однозначность определения будет уже дополняться контекстом (глобальный. внешний, локальный) При этом сложение (1, 2 ) / глобальная / = 4 сложение (1, 2 ) / локальная / = 2 будут давать разный результат в зависимости от возможности подключения модулей. 3. Для явного вызова можно использовать что-то типа. Систем.Сложение МойМодуль.Сложение Кажется других вариантов уже не придумать. Ну если только ввести оператор определения: Вызвать из (путь, модуль, функция по счету): Сложение (1.2).
и это пройдет...
|
21.09.2009, 08:55 | #10 | |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
Цитата:
и это пройдет...
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не используя стандартные функции (за исключением abs), вычислить с точностью до eps>0: | GHOST_DOG | Помощь студентам | 2 | 12.12.2008 05:58 |
VB перестал находить стандартные функции | neugadal | Microsoft Office Excel | 1 | 06.11.2008 12:31 |
Как лучше организовать базу данных типо как в ICQ | Руслантус | БД в Delphi | 3 | 09.08.2008 23:57 |
Макросы или стандартные функции | askhattk | Microsoft Office Excel | 4 | 20.06.2008 11:17 |
Оптимезация программ... Как лучше? | Altera | Общие вопросы Delphi | 9 | 27.02.2008 19:38 |