Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

Функции Overload.   Найти похожие ветки 

 
Dummes   (2005-06-14 10:58) [0]

Пытаюсь 2-е фукции с разными возвращающимися результатами использовать как Overload из DataModule. У Архангельского сказано, что возможно использование таких вещей в одном поле видимости.
Вопрос: Как должно выглядеть объявление этих функций в секции Public Datamodule. Колличество их ограниченно?


 
Val ©   (2005-06-14 11:00) [1]

1. а что он называет "полем видимости"?
2. ничем не отличается от объявления в других секциях.
3. чего?


 
Digitman ©   (2005-06-14 11:03) [2]


> Как должно выглядеть объявление этих функций в секции Public
> Datamodule


TMyObject = class(TDataModule)
..
public
 function MyMethod(SomeParams1): SomeType1;
 function MyMethod(SomeParams2): SomeType2;
 ...
 function MyMethod(SomeParamsN): SomeTypeN;
end;


 
Dummes   (2005-06-14 11:05) [3]

3. чего?
- Колличество функций имеющих одинаковые названия имеет ограничение?

- К сожалению, что он называет "полем видимости" остается только предполагать. Скорее всего в одном модуле.

2. ничем не отличается от объявления в других секциях.
ПРи таком объявлении происходит ошибочка...


 
Dummes   (2005-06-14 11:07) [4]

public
function MyMethod(SomeParams1): SomeType1;
function MyMethod(SomeParams2): SomeType2;
А где же Overload?

Я делал так:
public
function MyMethod: Integer;overload;
function MyMethod: String;overload;

...Ругается при этом!


 
-=XP=- ©   (2005-06-14 11:10) [5]

Пытаюсь 2-е фукции с разными возвращающимися результатами использовать как Overload из DataModule

Если функции различаются только возвращаемыми значениями, то перегрузка таких функций (методов) невозможна.
Перегружать можно только процедуры, функции и методы с разными входными параметрами. Но перегрузка функций типа:
function DoSomething: integer; overload;
function DoSomething: double; overload;

невозможна. Ибо тип возвращаемого значения не является поводом для определения компилятором вызываемой функции:
var
 i: integer;
begin
 i := DoSomething; // В общем случае неопределенность
 DoSomething; // Вообще неопределенность


Если же функции (процедуры, методы), отличаются входными параметрами, то их возможное количество не ограничено.


 
-=XP=- ©   (2005-06-14 11:12) [6]

Я делал так:
public
function MyMethod: Integer;overload;
function MyMethod: String;overload;


Неправильно делали. Читайте справочник Delphi по перегрузке методов. Особое внимание уделите ограничениям на перегрузку.


 
Digitman ©   (2005-06-14 11:13) [7]


> где же Overload?


overload сам допишешь


> Ругается при этом


SomeParams видишь ?


 
Dummes   (2005-06-14 11:20) [8]

Если функции различаются только возвращаемыми значениями, то перегрузка таких функций (методов) невозможна.

Спасибо -=XP=- ©  за разъяснение.
К сожалению, почерпнуть подробное инфо было неоткуда.


 
Val ©   (2005-06-14 11:23) [9]

>[8] Dummes   (14.06.05 11:20)

> К сожалению, почерпнуть подробное инфо было неоткуда.

угу.самый секретный раздел языка. справку смотреть пробовали?


 
Dummes   (2005-06-14 11:28) [10]

угу.самый секретный раздел языка. справку смотреть пробовали?

No coment!


 
-=XP=- ©   (2005-06-14 11:30) [11]

К сожалению, почерпнуть подробное инфо было неоткуда.

Кхм... В справке по Delphi про перегрузку методов, процедур и функций есть целые разделы. В них все понятно, доходчиво и исчерпывающе описано:

You can declare more than one routine in the same scope with the same name. This is called overloading. Overloaded routines must be declared with the overload directive and must have distinguishing parameter lists <...> Overloaded routines must be distinguished by the number of parameters they take or the types of their parameters <...> If you use default parameters in overloaded routines, be careful of ambiguous parameter signatures. For more information, see Default parameters and overloaded routines <...>

И много-много прочего...


 
Anatoly Podgoretsky ©   (2005-06-14 13:18) [12]

Dummes   (14.06.05 11:20) [8]
Если функции различаются только возвращаемыми значениями, то перегрузка таких функций (методов) невозможна.

Наглая ложь!


 
pasha_golub ©   (2005-06-14 13:47) [13]

Anatoly Podgoretsky ©   (14.06.05 13:18) [12]
Опровержение в студию!

ЗЫ Я чисто из-за спортивного интереса...


 
-=XP=- ©   (2005-06-14 13:55) [14]

pasha_golub ©   (14.06.05 13:47) [13]
Anatoly Podgoretsky ©   (14.06.05 13:18) [12]
Опровержение в студию!

ЗЫ Я чисто из-за спортивного интереса...


Я так подозреваю, весь сыр-бор из-за неточности формулировки "разница возвращаемых значений". Имеется в виду все же "разница типов возвращаемых значений". Но, в любом случае, первое является подмножеством второго. :)


 
icWasya ©   (2005-06-14 17:09) [15]

такое даже в C++ невозможно



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.06 c
6-1112684994
lin
2005-04-05 11:09
2005.07.11
TService + TClientSocket + TServerSocket


14-1118147107
karat
2005-06-07 16:25
2005.07.11
Домены стран СНГ.


14-1117741142
Юрий Зотов
2005-06-02 23:39
2005.07.11
Внеочередное и чрезвычайное MMP с участием kaif а!


1-1118411011
Allex
2005-06-10 17:43
2005.07.11
организация обмена информацией между приложениями


6-1112873558
Opilki_Inside
2005-04-07 15:32
2005.07.11
Выскакивающие окна iexplorera





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский