क्या क्लोजर में संरचना के भीतर घनिष्ठ संरचना हो सकती है? निम्नलिखित कोड पर विचार करें:क्लोजर संरचना एक और संरचना के भीतर नेस्टेड
(defstruct rect :height :width)
(defstruct color-rect :color (struct rect))
(defn
#^{:doc "Echoes the details of the rect passed to it"}
echo-rect
[r]
(println (:color r))
(println (:height r))
(println (:width r)))
(def first-rect (struct rect 1 2))
;(def c-rect1 (struct color-rect 249 first-rect)) ;form 1
;output "249 nil nil"
(def c-rect1 (struct color-rect 249 1 2)) ;form 2
;output "Too many arguments to struct constructor
(echo-rect c-rect1)
बेशक
यह एक काल्पनिक उदाहरण है, लेकिन ऐसे मामलों में जहां मैं कोड आसान बनाए रखने के लिए बनाने के लिए छोटे substructures में एक बड़े डेटा संरचना को तोड़ने के लिए चाहते हैं। जैसा कि टिप्पणियां इंगित करती हैं कि यदि मैं फॉर्म 1 करता हूं तो मुझे "24 9 शून्य शून्य" मिलता है लेकिन यदि मैं फॉर्म 2 करता हूं तो मुझे "स्ट्रक्चर कन्स्ट्रक्टर के लिए बहुत सारे तर्क मिलते हैं"।
यदि मैं गलत तरीके से इस मुद्दे पर आ रहा हूं, तो कृपया मुझे बताएं कि मुझे क्या करना चाहिए। क्लोजर Google समूह को खोजना मेरे लिए कुछ भी नहीं बदला।
संपादित करें:
मुझे लगता है कि मैं अपने प्रश्न के बयान में के रूप में स्पष्ट रूप में मैंने सोचा कि मैं था नहीं था:
1.) उस में एक और भीतर घोंसला एक struct करना संभव है Clojure? (नीचे से यह एक हां है।)
2.) यदि हां, तो सही वाक्यविन्यास क्या होगा? (फिर से, नीचे से निर्णय लेना ऐसा लगता है कि कोई ऐसा कर सकता है।)
3.) जब आप किसी अन्य संरचना के भीतर घोंसला वाली संरचना प्राप्त करते हैं तो आप एक निर्दिष्ट कुंजी द्वारा मूल्य कैसे प्राप्त करते हैं?
मुझे लगता है कि मेरा नमूना कोड वास्तव में प्रदर्शित नहीं करता था कि मैं बहुत अच्छा करने की कोशिश कर रहा था। मैं इसे यहां जोड़ रहा हूं ताकि अन्य लोग इसे खोज सकें, यह प्रश्न और उसके उत्तर अधिक आसानी से मिल सकते हैं।
धन्यवाद पॉल - यह वही है जो मैं जानना चाहता था। –