Co można zrobić tylko z intami w weakly-typed językach?

0

Piszę właśnie dokumentację do https://t-regx.com i potrzebuję przykładu jakiejś operacji którą można wykonać tylko na intach, a nie na stringach - i mając stringa trzeba uprzednio convertować/castować/zamieniać na inta - i też się zastanawiam czy w weakly typed językach w ogóle jest taka operacja, bo jak w JS '4' + '4' to coś innego niż 4 + 4 (i trzeba zamienić string na int), tak w PHP są do tego dwa operatory + oraz ., więc '4' + '4' to zawsze 8.

Any ideas?

0

'4' + '4'daje w PHP 8? Ale durny język

3
Pinek napisał(a):

'4' + '4'daje w PHP 8? Ale durny język

Tak, + to zawsze dodawanie, . to zawsze konkatenacja stringów, więc '4' + '4' == 8, a 4 . 4 = '44'.

1

@Pinek: nie durny tylko mający dynamiczne typowanie. Do łączenia stringów używasz . jak zrobisz + to znacz, że ma zrobić rzutowanie stringów na liczby i dodać. Jak się nie da to leci exception

0
mr_jaro napisał(a):

Jak się nie da to leci exception

Zapomnij o exceptionach w standardowej libce PHP. Wtedy leci warning, którego się nie da złapać.

1

@TomRiddle: powiem ci, że 8 lat w php i nie przychodzi mi nic do głowy. Możesz spróbować sprawdzić czy wszystko się zachowuje tak samo jak wymusisz pilnowanie typów declare(strict_types=1)

0
mr_jaro napisał(a):

@TomRiddle: powiem ci, że 8 lat w php i nie przychodzi mi nic do głowy. Możesz spróbować sprawdzić czy wszystko się zachowuje tak samo jak wymusisz pilnowanie typów declare(strict_types=1)

Bo tak, w tej libce chodzi o to że jak ktoś użyje jakiejś funkcji, i stanie się coś niespodziewanego (tak jak to w php się lubi dziać, np zmiana false na 0) to ma lecieć wyjątek, a nie próbować robić coś dalej. Dlatego napisałem do libki funkcje parseInt() która zwraca inta tylko wtedy, kiedy faktycznie jest intem, czyli ^[-+]?\d+$ (bez spacji, same cyfry, bez e, przecinków, etc. ma być int).

Ale w dokumentacji jakoś chciałbym podać uzasadniony przypadek użycia, tylko po co skoro $i->string() zadziała tak samo jak $i->parseInt() (pomijając wcześniejszą walidację). Noi tu jest problem

0

można byłoby zrobić dwie funkcje obie pobierałyby 2 argumenty z tym że jedna dopasowywałaby się pod 'arg' i robiłaby konkatenację a druga pod sam arg i leciałaby suma
tylko trochę to głupie :D

0
au7h napisał(a):

można byłoby zrobić dwie funkcje obie pobierałyby 2 argumenty z tym że jedna dopasowywałaby się pod 'arg' i robiłaby konkatenację a druga pod sam arg i leciałaby suma
tylko trochę to głupie :D

Ludzie czytając dokumentację powinni widzieć funkcje które znają - znajomość języka powinna pomagać w uczeniu się biblioteki.

0

No właśnie z intem jakoś nie widzę problemu, ze stringiem już bardziej chociażby w warunkach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0