konto usunięte
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.
Michał Wachowski edytował(a) ten post dnia 15.09.11 o godzinie 12:37
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'
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 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
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 Programista Python
Temat: przeciążenie funkcji
I tak jeszcze mały OT http://stackoverflow.com/questions/378927/what-is-the-... ;-)Podobne tematy
-
PHP » zamiana tagów w stringach z wykorzystaiem funkcji... -
-
PHP » Szukam programisty do aktualizacji strony / wdrożenia... -
-
PHP » Wykonywanie funkcji/kodu w konkretnym czasie -
-
PHP » Zdefiniowane argumenty funkcji/metody -
-
PHP » Zlecenie dodania nowych funkcji -
-
PHP » Wykorzystanie procedur i funkcji po stronie MySQL w... -
-
PHP » totalne zacmienie... nazwa funkcji -
-
PHP » moduł / controler / akcja - 3 poziomowy dostep do funkcji -
-
PHP » Przekazanie przez wartość parametrów formalmych funkcji... -
Następna dyskusja: