Diskuze: Void return type kdy se používá
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Nevím, jestli jsem otázku pochopil správně... Myslíš toto?
function foo(): void {
}
Za tu dvojtečku se uvádí návratový typ. Void znamená žádný, tj. takto deklarovaná funkce nebude (nesmí) vracet žádnou hodnotu. V praxi to znamená:
// Tato funkce je v pořádku.
function foo(): void {
// nějaký kód
}
// Tato funkce je také v pořádku.
function bar(): void {
// nějaký kód
return;
// nějaký kód
}
// Tato funkce vyhodí chybu: "Fatal error: A void function must not return a value"
function baz(): void {
// nějaký kód
return 1;
}
// Tato funkce je v pořádku.
function baz(): int {
// nějaký kód
return 1;
}
Používat by se to mělo ideálně vždy, kdy funkce nevrací žádnou hodnotu (a pokud vrací, tak místo void uveď její typ). Na rozdíl od většiny jiných jazyků je to v PHP ale nepovinné a starší verze PHP to dokonce ani nepodporovali.
Výhody to má prakticky asi dvě:
declare(strict_types=1);
Spis to z php dela podobnost s cpp(C++) kodem.
O prehlednosti by se dalo diskutovat. Ale fakt je, ze kdyz vis z prvniho radku,
ze tam neni void, tak hledas ve funkci slova return. A kdyz tam void je, tak
vis, ze tam return neni a bud funkce vraci data do promenne nebo zadna. Ale,
vicemene je to jen bezvyznamne zdrzeni, vzdycky se da hledat slovo return
A kdyz tam void je, tak vis, ze tam return neni...
Tento výrok je chybný. Funkce která nevrací hodnotu musí končit přechodem přes uzavírací závorku těla funkce } nebo příkazem return;, tak jak už zde v předchozím příspěvku správně uvedl Jan Kerhart. Nejde o přehlednost, ale o jednoznačnost. Než složitě hledat slovo return v těle funkce je lepší si přečíst komentář o významu návratové hodnoty nad hlavičkou definice funkce.
Děkuji moc za 100% srozumitelné vysvětlen už jsem zase o něco chytřejší diky
Mně to teda přijde rozhodně lepší vždy uvádět. To zlepšení je zejména když danou funkci potom voláš, jelikož v tu chvíli ti PhpStorm informaci o návratovém typu zobrazí a ty nemusíš tipovat nebo složitě hledat v dokumentaci jaký typ máš od funkce očekávat. Navíc návratový typ nemusí být pouze primitivní proměnná, kde je většinou z názvu funkce poměrně jasné, co máš očekávat, ale může se jednat o referenční datový typ, kde (obzvlášť při používání různých knihoven) není na první pohled často jasné, co máš vlastně čekat.
Když se vrátím přímo k void, tak jednak by mi přišlo nelogické u funkcí, které nic nevrací, nic neuvádět (v některé z verzí PHP to tak myslím bylo – již šlo uvádět návratový typ, ale neexistovalo ještě slovo void), protože by nebylo možné rozlišit, jestli na to programátor zapomněl/nechtěl a nebo jestli nic funkce nevrací. A navíc tím sdělíš IDE, že funkce nic nevrací a ono tě potom upozorní, pokud se pokusíš s návratovou hodnotou pracovat.
Ono, samotne php ten typ nepotrebuje znat. Takze, jediny duvod je php-storm a podobnost se zapisy v c++, ktere naopak typy potrebuje (ale c++ se specializuje na hw, kde to ani jinak nejde)
Zobrazeno 7 zpráv z 7.