Wpis z mikrobloga

1. Użyj metody, której nie rozumiesz działania.
2. Metoda zwraca prawidłowy wynik, zgodny z jej założeniami.
3. Bądź zaskoczony uzyskanym wynikiem.
4. Javascript taki zły i nieprzewidywalny!
  • Odpowiedz
nie wiem jaka logika mogła stać przy projektowaniu jej w ten sposób


@ascalon: pewnie taka, że w js w jednej tablicy możesz przechowywać różne typy danych, więc jak miałaby je posortować?
  • Odpowiedz
pewnie taka, że w js w jednej tablicy możesz przechowywać różne typy danych, więc jak miałaby je posortować?


@Zavis: nie wiem #!$%@?, może na przykład rzucić wyjątkiem przy próbie porównania niekompatybilnych typów danych? Automatyczna konwersja na stringa to srogi rak. Python też jest dynamicznie typowany, też może mieć w tablicy różne typy danych, a mimo to nie trzeba wkuwać dokumentacji na pamięć żeby przewidzieć co zrobi jakaś podstawowa funkcja.
  • Odpowiedz
@Zavis: Nie da się w JS wykryć typu danych? Przecież mogło by sprawdzić przed sortowaniem jaki to typ i wykonać odpowiednie sortowanie względem danego typu. Jest to zachowanie raczej nieprzewidywalne bo w innych językach np. Java gdy odpalisz Arrays.sort() to dostosowuje się do typu (bo w sumie nie ma wyboru). Nie spodziewałbym się zmiany na siłę czegoś na String
  • Odpowiedz
W jaki sposób on te dane przechowuje w pamięci? ( ͡° ͜ʖ ͡°)


@Zelber: tak na logikę to sądzę, że jeśli tablica jest możliwie zbliżona do "prawdziwej" tablicy (jeden typ danych o znanym rozmiarze, znana długość tablicy) to jest szansa, że kompilator sobie to zoptymalizuje i gdzieś pod spodem będzie siedzieć "prawdziwa" tablica czy inny vector lub podobna struktura. Jak ten warunek nie będzie spełniony (a o
  • Odpowiedz
może na przykład rzucić wyjątkiem przy próbie porównania niekompatybilnych typów danych


@croppz: kiedyś JS był projektowany tak żeby był możliwie bezwyjątkowy i wszystkie operacje co najwyżej failowały "cicho", stąd takie a nie inne bzdurne zachowania i żonglowanie typami żeby to się "jakoś" spinało. Ten trend zmienił się jakiś czas temu, jednak na modyfikację starych zachowań jest już za późno.
  • Odpowiedz
@croppz: > może na przykład rzucić wyjątkiem przy próbie porównania niekompatybilnych typów danych?

Rzucenie wyjątku też nie jest pure ( ͡° ͜ʖ ͡°)

Żeby funkcja była czysta, musi być kompletna (tak się chyba tłumaczy total function), ale bez systemu typów o to ciężko
  • Odpowiedz