Sobes.tech
Junior — Middle

Co brání použití přetížení metod, které se liší pouze typem vráceného výsledku?

sobes.tech AI

Odpověď od AI

Přetížení metod, které se liší pouze typem návratové hodnoty, není možné, protože překladač nemůže jednoznačně určit, kterou metodu volat, pouze na základě typu návratové hodnoty. Při volání metody se překladač dívá na název metody a typy parametrů, ale ne na typ návratové hodnoty.

Například, pokud jsou dvě metody:

func getValue() -> Int { ... }
func getValue() -> String { ... }

Při volání getValue(), překladač nebude schopen pochopit, kterou verzi volat, protože podpisy metod se shodují podle názvu a parametrů (žádné), a rozdíl je pouze v typu návratové hodnoty.

Proto je pro přetížení metod nutné je rozlišovat podle počtu nebo typů parametrů, nikoli podle typu návratové hodnoty.