![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как правильно описать функцию с разными выходами? [D6, XP]
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]
а я и не запрещал )