मैं 'प्रोफ़ाइल' को वापस करने की कोशिश कर रहा हूं जिसे बनाया गया था: सार्वजनिक-प्रोफ़ाइल सत्य।

यह मेरी स्कीमा है:

  (s/defschema profile
   {:id s/Int
   :name s/Str
   :last-name s/Str
   :age s/Int
   :origin {:country s/Str
        :city s/Str}
   :public-profile Boolean        
   })

और यह मेरा प्राप्त है:

    :get {
           :responses {http-status/ok {:schema [profile]}}
           :handler (fn [_] (ok (vals @profiles)))}}))

मैं क्लोजर पर नौसिखिया प्रोग्रामर हूं और मैं जानना चाहता हूं कि मेरी वापसी को केवल सार्वजनिक-प्रोफ़ाइल कैसे प्राप्त करें जो सत्य थे। ऐसा करने के लिए बस एक साधारण कार्य की तलाश में है ...

0
Matheus Balbino 17 अगस्त 2019, 03:47

1 उत्तर

सबसे बढ़िया उत्तर

मान लें कि @profiles एक नक्शा है जहां मान प्रोफ़ाइल हैं, तो आप केवल वही प्रोफ़ाइल लौटा सकते हैं जहां :public-profile फ़िल्टर. उदाहरण के लिए:

(filter
  (fn [profile] (:public-profile profile))
  (vals @profiles))

क्लोजर में कीवर्ड वास्तव में कार्य करते हैं और नक्शे पर लागू होने पर उनके अनुरूप मूल्य लौटाते हैं, इसलिए इसे लिखने का एक अधिक संक्षिप्त (और मेरा मानना ​​​​है कि मुहावरेदार) तरीका होगा:

(filter :public-profile (vals @profiles))
0
Ryan Jenkins 17 अगस्त 2019, 04:23