이 코드 스 니펫이 원본 벡터를 생성하지만 대/소문자를 구분하지 않고 정렬 할 것으로 예상했습니다. 대신 원본 벡터를 변경하지 않습니다. 내 비교 기능이 작동하지 않는 이유는 무엇입니까? 술어 (true 또는 false를 반환하는 함수)을 투여했을 때간단한 비교기가 (I) 예상대로 정렬하지 않습니다.
user=> (ns user (require [clojure.contrib.string :as str]))
nil
user=> (sort
(comparator #(compare (str/upper-case %1) (str/upper-case %2)))
["B" "a" "c" "F" "r" "E"])
("B" "a" "c" "F" "r" "E")
감사합니다. 비교기가 3 개의 가능한 값 (-1, 0, 1)을 생성하고 술어가 참 또는 거짓을 생성 할 수 있다는 사실에 혼란스러워했습니다. 그래서 당신은 결코 (비교 자)를 사용하여 만들어진 무언가로부터 0을 얻지 못하는 것 같습니다. –
Erm, 너무 빨리 말하면서 (비교 자) ** 실제로 ** 평등을 처리합니다. –