konto usunięte

Temat: przeciążenie funkcji

Ale mówimy o typach prostych w tym momencie :) O to pytałem. Zresztą mało ważne. Wiadomo o co chodzi.

konto usunięte

Temat: przeciążenie funkcji

Dla mnie typy proste nie muszą być typowane.
Jeśli mam wg twojego przykładu metodę add(), której zadaniem jest wykonywanie dodawania różnych elementów, to z założenia już robię rzutowanie typów prostych. W końcu oczekuję by wynikiem operacji była liczba a nie string.
Przynajmniej tak było jak chodziłem do szkoły... wynikiem dodawania była liczba.

Jeśli zaś mam metodę łączącą - to oczekuję na wyjściu stringa lub innego określonego z góry typu.


function add($a, $b) {
return (int) $a + (int) $b;
}

function merge($a, $b) {
return (string) $a . (string) $b;
}

add(1,1); // 2
add('foo','bar'); // 0

merge(1,1); // 11
merge('foo','bar'); // 'foobar'
Michał Wachowski edytował(a) ten post dnia 15.09.11 o godzinie 12:37
Marcin Staniszczak

Marcin Staniszczak Programista Python

Temat: przeciążenie funkcji

Ale... możesz chcieć mieć coś takiego jak np. getTimeOffset(...), zwracającą przesuniecie w sekundach od jakiegoś ważnego wydarzenia (początek roku?);-)

int getTimeOffset() //od dziś
int getTimeOffset(string date) //od daty YYYY-MM-DD
int getTimeOffset(int date) // od daty w formie timestampa

I pewnie, że się da, ale już mniej elegancko;-) Ale trzeba się z tym pogodzić;-)

konto usunięte

Temat: przeciążenie funkcji

Marcin w twoim przykładzie prócz rozróżnienia int'a od string'a jest jeszcze problem z formatem daty.
Tego przeciążaniem nie zrobisz i będziesz dziergał strtotime(), czy inny ulubiony sposób.Michał Wachowski edytował(a) ten post dnia 15.09.11 o godzinie 12:57
Marcin Staniszczak

Marcin Staniszczak Programista Python

Temat: przeciążenie funkcji

Michał Wachowski:
Marcin w twoim przykładzie prócz rozróżnienia int'a od string'a jest jeszcze problem z formatem daty.
Tego przeciążaniem nie zrobisz i będziesz dziergał strtotime(), czy inny ulubiony sposób.

Zgadza się, ale Ty tu czepiasz się w zasadzie drobiazgów w naszych "przykładach na szybko", a tu chodzi tylko i idę;-) I ja mówię, że czasami fajnie było by mieć taką możliwość a się nie da i trzeba się z tym pogodzić lub zmienić język;-) Ja się pogodziłem, tym bardziej, że w języku w którym teraz pisze o wiele więcej też nie mam takiej możliwości;-)

Zresztą samo to że tu nie trzeba poradzić sobie ze stringiem - fajnie by było to dzierganie mieć w innej funkcji niż ta gdzie robimy tylko proste odejmowanie;-) A tak, dla czytelności.

konto usunięte

Temat: przeciążenie funkcji

Nie czepiam się, tylko przykłady trochę takie... takie.

getTimeOffset($date = null) { ... }
getTimeOffset(Event $Event) { ... }

Tu już widać, że przeciążanie miało by sens i nawet przy dzisiejszym typowaniu miało rację bytu.

No ale nie ma, i trzeba sobie radzić...
Nie mniej jednak, nawet takie podłe i niedorobione by mnie ucieszyło.Michał Wachowski edytował(a) ten post dnia 15.09.11 o godzinie 13:20

konto usunięte

Temat: przeciążenie funkcji

Michał Wachowski:
Nie czepiam się, tylko przykłady trochę takie... takie.

getTimeOffset($date = null) { ... }
getTimeOffset(Event $Event) { ... }

Tu już widać, że przeciążanie miało by sens i nawet przy dzisiejszym typowaniu miało rację bytu.

No ale nie ma, i trzeba sobie radzić...
Nie mniej jednak, nawet takie podłe i niedorobione by mnie ucieszyło.

Przykład jak przykład. Ważne żeby było wiadomo o co chodzi a nie o to czy ma to sens większy. Więc tak - czepiasz się Michał :P

Ale żeby nie było że trwonimy czas na głupie dysputy jak tu ktoś stwierdził to dam ciekawostkę którą odkryłem jakiś czas temu.

http://ilia.ws/archives/217-Scalar-Type-Hints-are-Here...

Świetne rozwiązanie tam gdzie już mieliśmy czelność znacząco obniżyć czytelność kodu instalując już jakieś rozszerzenia do PHP. Może kogoś to zainteresuje.
W końcu co to za problem doinstalować kolejny :PDariusz Półtorak edytował(a) ten post dnia 15.09.11 o godzinie 13:38
Bartłomiej Jończy

Bartłomiej Jończy iOS / Java EE
Developer

Temat: przeciążenie funkcji

Btw. w Zendzie, na porządku dziennym w metodach jest if (is_array($parametr)) lub inne sprawdzanie typu instancji.
Marcin Staniszczak

Marcin Staniszczak Programista Python

Temat: przeciążenie funkcji

I tak jeszcze mały OT http://stackoverflow.com/questions/378927/what-is-the-... ;-)



Wyślij zaproszenie do