Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как правильно описать функцию с разными выходами? [D6, XP]


Страницы:   1 2

novai ©   (2011-02-11 18:18:00) 

как правильно описать функцию? хочу так:
   function WhatButtonOn(AX, AY: integer): string;
   function WhatButtonOn(AX, AY: integer): integer;
не получается, пока сделал так:
   function WhatButtonOn(AX, AY: integer): string; overload;
   function WhatButtonOn(AX, AY: Smallint): Smallint; overload;
но не думаю, что это правильно, как правильно, или это не возможно?


Anatoly Podgoretsky   (2011-02-12 10:25:00) [1]

> novai  (11.02.2011 21:11:26)  [26]

Я бы повесился, вот к чему приводит гонка за лидером. Не все что дозволено
Микрософту, хорошо для других


Anatoly Podgoretsky   (2011-02-12 10:23:00) [2]

> novai  (11.02.2011 21:11:26)  [26]

А где речь про перезагрузку, про что спрашиваешь, с какой целью, в каком
контексте, может ты Матрицу хочешь перезагрузить, или компьютер, или
программу, для функций это не применимо, а если и применимо, то это уже
рекурсия.


Anatoly Podgoretsky   (2011-02-12 10:21:00) [3]

> novai  (11.02.2011 21:08:25)  [25]

Какая разница, что мы делаем с результатом, вопрос что вызывать?
Или так proc1(func1(1, 2))
Учись мыслить шире


sniknik   (2011-02-11 22:14:00) [4]

> просто мне удобно вызывать функцию в разных местах программы с одинаковыми входными параметрами, но разными выходными...
это тебе только кажется, что удобно... вот представь, что ВСЕфункции в дельфи имеют одно название... кошмар какой, у тебя тот же кошмар только маленький, на 2х функциях незаметный. причем перекрывающийся из-за лени, неприятностью запоминать 2 слова вместо одного. но если подумать...


И. Павел   (2011-02-11 22:03:00) [5]


> можно на пальцах, что есть перезагрузка?

http://256bit.ru/Delphi7/Glava1/Index9.html(обратите внимание: "Перегрузка методов нужна, чтобы произвести одинаковые или похожие действия с разнотипными данными.")

И еще: как прикажете компилятору обработать вот такое выражение:
if WhatButtonOn(1, 1) = WhatButtonOn(2, 2)


novai   (2011-02-11 21:11:00) [6]


> сведет на нет все удобства перегрузки

можно на пальцах, что есть перезагрузка?

просто мне удобно вызывать функцию в разных местах программы с одинаковыми входными параметрами, но разными выходными...


novai   (2011-02-11 21:08:00) [7]


> можно написать так S := func и просто func

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


И. Павел   (2011-02-11 21:05:00) [8]


>  function WhatButtonOn(Smallint(sy), Smallint(sy)): Smallint;
>  overload;

Но ведь такой громоздкий вызов функции сведет на нет все удобства перегрузки. ИМХО, легче уж разные имена использовать...


novai   (2011-02-11 21:04:00) [9]


> > i:= WhatButtonOn(1, 2);
> > что вызовется?
>
> думал в замисимоcти от вызова вызовет s или i

те в местах вызова буду вызвать с нужным типом s или i...


novai   (2011-02-11 21:03:00) [10]


> i:= WhatButtonOn(1, 2);
> что вызовется?

думал в замисимоcти от вызова вызовет s или i

> какого
> типа параметр 123

не понял, интегер или шортинт?

> Опять не одназначные параметры

да но с приведением, станут похожи если вызывать с приведением типа:
var
sX, sY: integer;
..
 
 function WhatButtonOn(Smallint(sy), Smallint(sy)): Smallint; overload;


Anatoly Podgoretsky   (2011-02-11 19:18:00) [11]

> novai  (11.02.2011 18:51:15)  [15]

Опять не одназначные параметры


Anatoly Podgoretsky   (2011-02-11 19:17:00) [12]

> Palladin  (11.02.2011 18:44:12)  [12]

А кто? Франк Борланд?


Anatoly Podgoretsky   (2011-02-11 19:14:00) [13]

> novai  (11.02.2011 18:27:03)  [3]

С чего бы, например

можно написать так S := func и просто func


Anatoly Podgoretsky   (2011-02-11 19:13:00) [14]

> novai  (11.02.2011 18:18:00)  [0]

Сам синтаксис правильный, а вот функции нет, это неодназначно, скажи какого
типа параметр 123? Параметры должны быть разными по типу и одназначными.


novai   (2011-02-11 19:09:00) [15]

и ax и ay я всегда перед вызовом буду приводить к Smallint?


sniknik   (2011-02-11 19:09:00) [16]

> и всетаки можно сделать так:
ну, я как опять не возражаю... делай!

p.s.
i:= WhatButtonOn(1, 2);
что вызовется?


novai   (2011-02-11 18:51:00) [17]

и всетаки можно сделать так:
 function WhatButtonOn(AX, AY: integer): string; overload;
 function WhatButtonOn(AX, AY: Smallint): Smallint; overload;
если Ax и АY гарантированно не выйдут за пределы smallint?


novai   (2011-02-11 18:46:00) [18]

справку я посмотрел
увидел:

function Divide(X, Y: Real): Real; overload;

begin
 Result := X/Y;
end;

function Divide(X, Y: Integer): Integer; overload;

begin
 Result := X div Y;
end;
и не обратил внимания на разные типы параметров( еще раз - спасибо!


novai   (2011-02-11 18:44:00) [19]


> function WhatButtonOn(AX, AY: integer; const r: String):
>  String; overload;
> function WhatButtonOn(AX, AY: integer; r: integer): integer;
>  overload;

так не интересно, лучше тогда процедурой... все понял, палладин отдельное спасибо


Palladin   (2011-02-11 18:44:00) [20]


> sniknik ©   (11.02.11 18:43) [9]

а я и не запрещал )


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо