Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Co znaczy tutaj to 'int'?
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Hej ludzie, co znaczy ': int' na koncu pierwszej linijki w ponizszym kodzie? Że funkcja ma zwrócić integer?

  1. public static function addition(int $number2, int $number3): int
  2. {
  3. return $number2 + $number3;
  4. }

Dzięki.
gino
Tak, jeśli typ zwrócony będzie inny, to otrzymasz coś w tylu: Return value must be of type integer ...
sadistic_son
Ok, dzięki. Ale to po co wtedy autor tego kodu jeszcze rzutuje typ int na $number1 i $number2? Przecież nie ma możliwości żeby wyszło coś innego niż int.
gino
Teoretycznie masz racje, ale jak by ktoś na siłę chciał wrzucić np. float albo inny typ to możesz to sobie obsłużyć ładnie w exception. Ale już np. podczas dzielenia sprawa nie jest taka oczywista bo może zwrócić float.
vokiel
Cytat(sadistic_son @ 14.12.2022, 22:12:01 ) *
Ok, dzięki. Ale to po co wtedy autor tego kodu jeszcze rzutuje typ int na $number1 i $number2? Przecież nie ma możliwości żeby wyszło coś innego niż int.


W tym kodzie tak, ale generalnie wymuszenie typów wejściowych nie implikują typu wyściowego. Zawsze może w metodzie coś zmodyfikować typ zmiennych.

  1. public static function addition(int $number2, int $number3): int
  2. {
  3. $number2 = $this->countNumber($number2); // jeśli tutaj wróci float to wynik też będzie float
  4. return $number2 + $number3;
  5. }

Salvation
Cytat(sadistic_son @ 14.12.2022, 22:12:01 ) *
Ok, dzięki. Ale to po co wtedy autor tego kodu jeszcze rzutuje typ int na $number1 i $number2?

To nie jest rzutowanie, a określenie jakiego typu są zmienne wejściowe.
Cytat(sadistic_son @ 14.12.2022, 22:12:01 ) *
Przecież nie ma możliwości żeby wyszło coś innego niż int.

Bo to proste dodawanie, ale określenie zwracanego typu jest tak samo ważne jak typy wejściowe.

Problem z PHP jest taki, że nie jest językiem silno typowanym (co się jednak zmienia i kładzie się nacisk na typy jak widać) i sporo programistów jest już do tego przyzwyczajonych...
Spróbuj na chwilę przerzucić się na Jave czy C#, to zrozumiesz o co w tym biega, jeżeli nadal masz problem.
sadistic_son
Rozumiem. Dzięki za odpowiedzi.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.