2014-11-19 17 views
6

:-, core.typed kitaplığından this code ne anlama geliyor?Ne anlama geliyor: clojure core.typed?

(t/ann play-many [(ta/Chan RPSResult) t/Int -> (t/Map t/Any t/Any)]) 
(defn play-many 
    "Play n matches from out-chan and report a summary of the results." 
    [out-chan n] 
    (t/loop [remaining :- t/Int, n       ;; <======== This line 
      results :- (t/Map PlayerName t/Int), {}] 
    (if (zero? remaining) 
     results 
     (let [[m1 m2 winner] (a/<!! out-chan)] 
     (assert m1) 
     (assert m2) 
     (assert winner) 
     (recur (dec remaining) 
       (merge-with + results {winner 1})))))) 
+0

Anlamı:: -'. Bir clojure repl açın ve ': -' yazın ve ne demek istediğimi göreceksiniz. – Cubic

cevap

12

Belirtildiği gibi, :- sadece bir anahtar sözcüktür. results bir tamsayı olan bir oyuncu adını ilişkilendiren bir harita iken,

(t/loop [remaining :- t/Int, n 
     results :- (t/Map PlayerName t/Int), {}] 
    ...) 

Bu remaining bir tamsayı olduğu anlamına gelir: Ancak, bağlamda o core.typed 'in ek açıklamaların parçası belirli bir türdeki olarak döngü bağlamaları işaretleme, var . Bunlar, core.typed'un tip denetleyicisi kullanılarak doğrulanabilir.

6

:- tek bir karakter, - bir anahtar kelimedir.

user=> :- 
:- 
user=> (class :-) 
clojure.lang.Keyword