Diskuze: Nepovinny parameter funkcie

Tvůrce

Zobrazeno 20 zpráv z 20.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Tomu se v OOP tak říká, metoda je přetížená když existuje více variant parametrů se kterými se volá.
Myslím že expoox měl spíše na mysli implicitní parametry než přetížení funkce.
no neviem aky je medzi tym rozdiel... ale ked som si vyskusal to pretazenie tak to robi zatial to co som mal na mysli
Přetížení je že uděláš dvě různý funkce se stejnym názvem, když
pak tu funkci voláš, kompilátor podle předaných parametrů pozná kterou z
nich má použít. Pro implicitní parametry ti stačí jedna funkce, přičemž
u několika posledních parametrů můžeš určit jejich implicitní hodnotu a
tyhle parametry pak nemusíš dosazovat při volání, kompilátor za ně
dosadí tu implicitní hodnotu.
http://www.programmersheaven.com/…-parameters/
Delphi by to mělo umět.
No tak toto mi nejde do hlavy, podľa toho čo píšeš a podľa toho čo som si teraz otestoval tak toto:
function plus(a:integer; b:integer=1):integer;
begin
result:=a+b;
end;
funguje tak isto ako toto:
function plus(a:integer; b:integer=1):integer; overload;
begin
result:=a+b;
end;
ak so tom správne pochopil tak len s tým rozdielom že preťaženie je pamäťovo náročnejšie... teda mi logicky vychádza jedna otázka, aký zmysel ma overload? má neakú výhodu oproti tomu čo hovoríš ?
Pokud chceš aby ty funkce dělaly něco jinýho, požuiješ přetížení (overload). Pokud chceš aby dělaly to samý, jenom si nemusel dosazovat některý parametry, použiješ implicitní parametry. Přece nebudeš tu funkci celou psát podruhý.
Při overload si můžeš definovat úplně jiné parametry, při implicitní hodnotě máš stále ty samé, jen některé nemusíš zadat.
Mluvil jsi o funkci inc. Představ si, že potřebuješ, aby uměla inkrementovat i desetinná čísla. To jinak než overloadem neuděláš.
Dvě funkce se stejným názvem a alespoň jedním odlišným parametrem.
Však to máš v tom návodu, na který jsem ti poslal odkaz.
Proč fce co sčítá 2 integery vrací real? Takhle to bude:
function plus(a:integer; b:integer):integer; overload;
begin
result:=a+b;
end;
function plus(a:real; b:real):real; overload;
begin
result:=a+b;
end;
Snad se to takhle přeloží, Pascal jsem neviděl už několik let a jsem za to rád.
Mohl by, pomocí genericity... nevim ale jestli se v delphi dá udělat generická funkce, pokud ne musel by udělat celou třídu.
sdraco mi kdysi napsal, že extrémně přetěžuji objekty. Jsem žabař...
Genericita je skvělá věc, pokud jí jazyk dostatečně podporuje.
Zobrazeno 20 zpráv z 20.