क्या आप उदाहरणों के साथ समझा सकते हैं कि retag
पैरामीटर multi-spec
निर्माण को कैसे प्रभावित करता है? मुझे multi-spec
दस्तावेज पचाने के लिए कठिन लगता है।एस/बहु-spec मतलब में retag पैरामीटर क्या है?
उत्तर
:
ReTag मिलान टैग के साथ उत्पन्न मूल्यों फिर से टैग करने पीढ़ी के दौरान प्रयोग किया जाता है। रीटैग या तो एक कीवर्ड हो सकता है, जिस पर प्रेषण-टैग का आकलन किया जाएगा, या जेनरेटेड मान का एक एफएन और प्रेषण-टैग जो उचित रूप से रीटैग किए गए मान को वापस कर देना चाहिए।
तो retag
(spec guide example के रूप में) एक कीवर्ड है, multi-spec
आंतरिक रूप से एक समारोह here जो जनरेटर कार्यान्वयन समारोह में प्रयोग किया जाता है पैदा करता है। उदाहरण के लिए, इन दो बहु कल्पना घोषणाओं कार्यात्मक रूप से बराबर कर रहे हैं: जब गैर के लिए multi-spec
का उपयोग कर
(s/def :event/event (s/multi-spec event-type :event/type))
(s/def :event/event (s/multi-spec event-type
(fn [genv tag]
(assoc genv :event/type tag))))
एक retag
समारोह गाइड के उदाहरण दिए गए एक बहुत ही उपयोगी विकल्प की तरह प्रतीत नहीं होता पासिंग, लेकिन अधिक उपयोगी है नक्शे। उदाहरण के लिए, यदि आप multi-spec
s/cat
के साथ उपयोग करना चाहते हैं उदा। समारोह आर्ग विशिष्ट जानकारी के अनुसार:
(defmulti foo first)
(defmethod foo :so/one [_]
(s/cat :typ #{:so/one} :num number?))
(defmethod foo :so/range [_]
(s/cat :typ #{:so/range} :lo number? :hi number?))
foo
पहले आर्ग के आधार पर या तो दो या तीन आर्ग लेता है,। अगर हम multi-spec
करने की कोशिश इस भोलेपन से s/cat
कीवर्ड/टैग का उपयोग कर, यह काम नहीं करेगा:
(s/def :so/foo (s/multi-spec foo :typ))
(sgen/sample (s/gen :so/foo))
;; ClassCastException clojure.lang.LazySeq cannot be cast to clojure.lang.Associative
यह वह जगह है, जहां एक retag
समारोह पारित करने में सक्षम किया जा रहा है उपयोगी है:
(s/def :so/foo (s/multi-spec foo (fn [genv _tag] genv)))
(sgen/sample (s/gen :so/foo))
;=>
;((:so/one -0.5)
; (:so/one -0.5)
; (:so/range -1 -2.0)
; (:so/one -1)
; (:so/one 2.0)
; (:so/range 1.875 -4)
; (:so/one -1)
; (:so/one 2.0)
; (:so/range 0 3)
; (:so/one 0.8125))
- 1. पैरामीटर क्या है: _ * स्कैला में मतलब है?
- 2. क्या टेम्पलेट पैरामीटर के टेम्पलेट पैरामीटर-सूची मतलब है
- 3. क्या करता है: = vb.net में मतलब है?
- 4. अजगर में, क्या रेखांकन पैरामीटर समारोह में मतलब
- 5. numpy.random.choice में प्रतिस्थापन का मतलब क्या है?
- 6. यूआरएल में/#!/मतलब क्या है?
- 7. सी = # में क्या मतलब है?
- 8. जावास्क्रिप्ट में /// मतलब क्या है?
- 9. :: * सी ++ में क्या मतलब है?
- 10. बैश में क्या मतलब है?
- 11. विमस्क्रिप्ट में = ~ मतलब क्या है?
- 12. सी ++ में ~ मतलब क्या है?
- 13. एसक्यूएल में # मतलब क्या है?
- 14. सीएसएस में + मतलब क्या है?
- 15. PHP में @ मतलब क्या है?
- 16. ^{} मतलब गिट में क्या है?
- 17. प्रोलॉग में \ + मतलब क्या है?
- 18. हास्केल में `~` क्या मतलब है?
- 19. [#] सी # में क्या मतलब है?
- 20. _ :: स्कैला में क्या मतलब है?
- 21. लुआ में # मतलब क्या है?
- 22. क्या करता है `` ... मतलब में
- 23. :: सी ++ में :: मतलब क्या है?
- 24. सी # में/*! */मतलब क्या है?
- 25. ##fine मतलब में ## क्या है?
- 26. गणित में # मतलब क्या है?
- 27. पाइथन में = = मतलब क्या है?
- 28. वास्तव में क्या मतलब है?
- 29. $ ([]) jQuery में क्या मतलब है?
- 30. MATLAB में ~ = मतलब क्या है?
महान के लिए धन्यवाद स्पष्टीकरण और उदाहरण! – OlegTheCat