अलग नोड प्रकार से बना एक पेड़ का प्रतिनिधित्व करने के लिए बेहतर मुहावरेदार clojure अभ्यास है कौन सा:क्लोजर में, हेटरोजेनस नोड प्रकार के पेड़ों को रिकॉर्ड या वैक्टरों का उपयोग करके कब प्रदर्शित किया जाना चाहिए?
ए इमारत रिकॉर्ड के कई अलग अलग प्रकार के बाहर पेड़, कि एक deftype या defrecord का उपयोग कर परिभाषित करता है:
(defrecord node_a [left right])
(defrecord node_b [left right])
(defrecord leaf [])
(def my-tree (node_a. (node_b. (leaf.) (leaf.)) (leaf.)))
वैक्टर से बाहर बी इमारत के पेड़, कीवर्ड प्रकार तय किया साथ:
(def my-tree [:node-a [:node-b :leaf :leaf] :leaf])
अधिकांश clojure कोड है कि मैं देख रहा हूँ (वैक्टर, नक्शे, आदि) सामान्य प्रयोजन डेटा संरचनाओं के उपयोग के पक्ष में रहा है, आर डेटाटाइप या रिकॉर्ड से अधिक। एक उदाहरण लेने के लिए हिचअप, वेक्टर + कीवर्ड दृष्टिकोण का उपयोग करके बहुत अच्छी तरह से एचटीएमएल का प्रतिनिधित्व करता है।
हमें दूसरी शैली में एक शैली को कब पसंद करना चाहिए?
मुझे उम्मीद है कि सवाल बहुत अस्पष्ट नहीं है। मैंने इसे इस तरह तैयार किया, क्योंकि इस तरह के निर्णय, रिकॉर्ड या जेनेरिक डेटा संरचनाओं का उपयोग करने के लिए काफी बार आते हैं, और उत्तर अक्सर स्पष्ट नहीं होता है। मेरे लिए, कम से कम। –
यह काफी हद तक निर्भर करता है कि आप नोड्स के साथ क्या करने की उम्मीद करते हैं। इसके लायक होने के लिए, यह नोड्स के लिए उपयोगी हो सकता है जो 'clojure.zip' जिपर लाइब्रेरी के साथ काम कर सकते हैं। –