Junior — Middle
Mi akadályozza meg, hogy csak a visszatérési típusban különböző metódusokat túlterheljük?
sobes.tech MI
Válasz az MI-től
A csak a visszatérési típus szerint különböző metódusok túlterhelése nem lehetséges, mert a fordító nem tud egyértelműen meghatározni, hogy melyik metódust hívja meg, kizárólag a visszatérési típus alapján. Egy metódus hívásakor a fordító a metódus nevét és a paraméterek típusait nézi, de nem a visszatérési típust.
Például, ha két metódus van:
func getValue() -> Int { ... }
func getValue() -> String { ... }
A getValue() hívásakor a fordító nem fogja tudni, melyik verziót hívja meg, mivel a metódus szignatúrák megegyeznek név és paraméterek szerint (egyik sem), és csak a visszatérési típusban van különbség.
Ezért a metódusok túlterheléséhez szükséges őket a paraméterek számával vagy típusával megkülönböztetni, nem pedig a visszatérési típussal.