clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
achikin 2018-04-23T13:14:11.000068Z

shadow-cljs это обертка НАД cljsbuild

achikin 2018-04-23T13:15:01.000602Z

Что-то на меня напал тупняк

achikin 2018-04-23T13:15:11.000521Z

Смотрю доку к sort-by

achikin 2018-04-23T13:15:18.000369Z

Returns a sorted sequence of the items in coll, where the sort
order is determined by comparing (keyfn item).  If no comparator is
supplied, uses compare.  comparator must implement
java.util.Comparator.  Guaranteed to be stable: equal elements will
not be reordered.  If coll is a Java array, it will be modified.  To
avoid this, sort a copy of the array.

achikin 2018-04-23T13:15:31.000336Z

Не могу понять как задать sort order.

achikin 2018-04-23T13:15:56.000320Z

the sort order is determined by comparing (keyfn item)

achikin 2018-04-23T13:16:06.000676Z

Это как?

achikin 2018-04-23T13:16:35.000444Z

Или это не sort order в смысле "от большего к меньшему или наоборот"?

2018-04-23T13:19:41.000036Z

это и есть по умолчанию “от меньшему к большему” только по значениям которые выдает (keyfn item)

2018-04-23T13:20:53.000383Z

обратную сортировку можно задать передаваю кастомную функцию comp

2018-04-23T13:21:51.000407Z

которая реализует такой же интерфейс что и https://clojuredocs.org/clojure.core/compare

2018-04-23T13:24:01.000262Z

например (sort-by #(get-in % [:foo :bar]) [{:foo {:bar 3}} {:foo {:bar 1}} {:foo {:bar 2}}]) вернет [{:foo {:bar 1}} {:foo {:bar 2}} {:foo {:bar 3}}]

2018-04-23T13:25:21.000522Z

но с другим компаратором (например с >) получится вот так (sort-by #(get-in % [:foo :bar]) > [{:foo {:bar 3}} {:foo {:bar 1}} {:foo {:bar 2}}]) вернет [{:foo {:bar 3}} {:foo {:bar 2}} {:foo {:bar 1}}]

achikin 2018-04-23T13:31:21.000571Z

Ага, спасибо.

achikin 2018-04-23T13:34:46.000552Z

> опасненько использовать. Он на строках не работает.

achikin 2018-04-23T13:35:14.000331Z

Тут скорее пойдет #(neg (compare %1 %2))

2018-04-23T13:41:09.000288Z

да это я в качестве примера) понятное дело что компаратор нужно более детально реализовывать)