2012-07-13 18 views
5

में एक रिकॉर्ड के क्षेत्रों पुनर्परिभाषित Clojure की खुशी में यह कहा गया है कि:Clojure

तुम भी एक रिकॉर्ड को फिर से परिभाषित कर सकते हैं अगर विभिन्न क्षेत्रों आप जावा गतिशील

की संकलित प्रदर्शन देने के लिए वांछित

क्या कोई मुझे इस बारे में बता सकता है कि यह कैसे किया जाता है?

धन्यवाद

+0

कौन सा अध्याय/पेज? – Kevin

+0

@ केविन पेज 1 9 1 - http://www.manning.com/fogus/Sample-Ch9.pdf :) –

+0

आपका मतलब है कि रिकॉर्ड को फिर से परिभाषित करने के लिए कैसे किया जाता है? – Ankur

उत्तर

6

9 अध्याय में हम FIXO प्रोटोकॉल और दोनों एक TreeNode रिकॉर्ड और TreeNode प्रकार के एक्सटेंशन की परिभाषा के माध्यम से चलते हैं। हम दिखाते हैं कि FIXO के कार्यान्वयन को गतिशील रूप से किया जा सकता है। वास्तव में, हम TreeNode रिकॉर्ड से शुरू करते हैं, FIXO प्रोटोकॉल का विस्तार करें और फिर TreeNode प्रकार को परिभाषित करें और इसके बजाय FIXO का विस्तार करें। हालांकि हम फ़ील्ड की संख्या नहीं बदलते हैं, हम टाइप को स्वयं बदलते हैं और एक बार विस्तारित करते हैं, FIXO प्रोटोकॉल के माध्यम से सभी कॉल नए प्रकार के लिए हल होते हैं (हमें एक्सटेंशन को nil पर फिर से परिभाषित करना था क्योंकि यह पुराने रिकॉर्ड को वापस कर रहा था- आधारित NodeType

आप संभावना कोड है कि आप को तैनात करेगा में ऐसा होता नहीं है, लेकिन यह एक उपयोगी तकनीक है जब प्रयोग। FIXO अनुभाग के माध्यम से चलना और प्रकार की जाँच के रूप में आप जाने के लिए प्रयास करें।