Szukaj…


Wprowadzenie

Ten dokument zawiera różne podstawowe funkcje oferowane przez clojure. Nie wymaga to wyraźnej zależności i jest częścią org.clojure.

Definiowanie funkcji w clojure

(defn x [a b] 
        (* a b)) ;; public function

=> (x 3 2) ;; 6
=> (x 0 9) ;; 0

(defn- y [a b] 
        (+ a b)) ;; private function

=> (x (y 1 2) (y 2 3)) ;; 15

Assoc - aktualizacja wartości mapy / wektora w clojure

Po zastosowaniu na mapie zwraca nową mapę z nowymi lub zaktualizowanymi kluczowymi parami wartości.

Można go użyć do dodania nowych informacji do istniejącej mapy.

(def userData {:name "Bob" :userID 2 :country "US"})
(assoc userData :age 27)            ;; { :name "Bob" :userID 2 :country "US" :age 27} 

Zastępuje starą wartość informacyjną, jeśli dostarczono istniejący klucz.

(assoc userData :name "Fred")       ;; { :name "Fred" :userID 2 :country "US" } 
(assoc userData :userID 3 :age 27)  ;; {:name "Bob" :userID 3 :country "US" :age 27} 

Można go również użyć w wektorze do zamiany wartości o podanym indeksie.

(assoc [3 5 6 7] 2 10)              ;; [3 5 10 7]
(assoc [1 2 3 4] 6 6)               ;; java.lang.IndexOutOfBoundsException 

Operatory porównania w Clojure

Porównania są funkcjami w clojure. Oznacza to, że w (2>1) jest (> 2 1) w clojure. Oto wszystkie operatory porównania w clojure.

  1. Lepszy niż

(> 2 1) ;; true
(> 1 2) ;; false

  1. Mniej niż

(< 2 1) ;; false

  1. Większe bądź równe

(>= 2 1) ;; true
(>= 2 2) ;; true
(>= 1 2) ;; false

  1. Mniejszy lub równy

(<= 2 1) ;; false
(<= 2 2) ;; true
(<= 1 2) ;; true

  1. Równy

(= 2 2) ;; true
(= 2 10) ;; false

  1. Nie równy

(not= 2 2) ;; false
(not= 2 10) ;; true

Dissoc - oddzielenie klucza od mapy clojure

Zwraca mapę bez par klucz-wartość dla kluczy wymienionych w argumencie funkcji. Można go użyć do usunięcia informacji z istniejącej mapy.

(dissoc {:a 1 :b 2} :a) ;; {:b 2}

Może być również używany do usuwania wielu kluczy, takich jak:

(dissoc {:a 1 :b 2 :c 3} :a :b) ;; {:c 3}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow