Как написать это лучше в Clojure - PullRequest
2 голосов
/ 06 октября 2009

Структура моего хэша

(def *document-hash*   {"documentid" {:term-detail {"term1" tf1 ,"term2" tf2}})

Я хочу найти тф. Прямо сейчас у меня есть это. Есть ли лучший способ сделать это в ближайшем будущем?

;; Find tf
(defn find-tf [documentid term-number]
  (if (nil? *document-hash* documentid)
       0
       (if (nil? (((*document-hash* documentid) :term-detail) term-number))
            0
            (((*document-hash* documentid) :term-detail) term-number))))

1 Ответ

4 голосов
/ 06 октября 2009

Обновлено для работы с Ref:

(def *document-hash* (ref (hash-map)))

(dosync (alter *document-hash* conj {12603 {:term-detail {2 10}, :doclen 30}}))

(defn find-tf [documentid term-number]
  (or (get-in @*document-hash* [documentid :term-detail term-number])
      0))

(find-tf 12603 2) ; yields 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...