(Untitled)

Jan 14, 2013 17:31

В твиторе проскочило про node.js:

[1,2,3,11,22].sort() -> [ 1, 11, 2, 22, 3 ]

Зачем такое вообще нужно?

Leave a comment

Comments 27

jakobz January 14 2013, 14:01:17 UTC
А как вообще в динамическом языке правильно сортировать массив? Проходить по всему массиву и считать чего там больше - строк, чисел, или каких-нибудь объектов с compareTo()?

Reply

kmmbvnr January 14 2013, 15:30:01 UTC
Просто всегда используя .compareTo()

Так делают и ruby и python

Reply

jakobz January 15 2013, 07:05:07 UTC
Есть два способа:
1. пихать CompareTo() в объекты. Это плохо, т.к. не все типы можно и нужно сравнивать, сложно поменять функцию сравнения на лету, два объекта разных типов могут по-разному сравниваться друг с другом
2. передача функции или объекта для сравнения явно. Это лучше, т.к. по коду все видно, нет проблем с разным сравнением разных объектов в рамках одной сортировки, функции сравнения хорошо комбинируются: легко из ASC сделать DESC, легко отсортировать по двум полям в один проход. Из минусов только то, что хреново работает без лямбд.

В JS - второй, более правильный подход. Претензия в том, что используется сравнение строк по умолчанию. Ну да, у JS половина косяков от того, что хотели сделать попроще, а вышло боком.

Reply

kmmbvnr January 15 2013, 11:06:42 UTC
>> сложно поменять функцию сравнения на лету
Чего сложного-то? Так же передаешь в sort свою реализацию

>> В JS - второй, более правильный подход
Ты забыл имхо написать.

В python и ruby сортировки гомогенных списков любых типов отработают на ура,
именно так как ожидает программист.

Не-гомогенные списки на практике встречаются ну очень редко.

Reply


rustler2000 January 14 2013, 14:15:24 UTC
Не к ноде же )))
```
Definition and Usage

The sort() method sorts the items of an array.

The sort order can be either alphabetic or numeric, and either ascending or descending.

Default sort order is alphabetic and ascending.```

Reply

(The comment has been removed)

rustler2000 January 15 2013, 13:00:56 UTC
тоесть к ноде претензий больше нету?

Reply

(The comment has been removed)


demmonoid January 14 2013, 16:42:13 UTC

... )

Reply

trailmax January 14 2013, 16:56:17 UTC
а похапе тут зачем? или общее направление мысли?

Reply

demmonoid January 14 2013, 17:11:49 UTC
Это о том, что презентацию в стиле WAT можно не только про жабаскрипт делать.

Reply

levgem January 15 2013, 10:54:03 UTC
Дима, PHP обидеть проще чем Данилу.

А светозарный v8 как выясняется считает быстро, но херню какую-то

Reply


Leave a comment

Up