2013-08-22 7 views
13

जबकि क्लोजर और क्लोजरस्क्रिप्ट विशेषताएं मूल रूप से वही हैं (स्पष्ट मतभेदों के अलावा), मैक्रोज़ नहीं हैं। जब मैं क्लोजरस्क्रिप्ट में मैक्रो चाहता हूं तो मुझे इसे क्लोजर में लिखना होगा और आवश्यकता-मैक्रोज़ के साथ इसकी आवश्यकता होगी। क्या यह जावास्क्रिप्ट की तकनीकी सीमा है या सिर्फ एक डिजाइन निर्णय है? दोनों एक जैसे क्यों नहीं हो सकते हैं?Clojurescript मैक्रोज़ क्लोजरस्क्रिप्ट में क्यों नहीं लिखा जा सकता है?

उत्तर

15
स्टुअर्ट सिएरा और Luker VanderHart, पेज 69 से

ClojureScript: Up and Running से:

मैक्रो संकलन की प्रक्रिया के दौरान ही लागू है। वे रनटाइम पर मौजूद नहीं हैं। चूंकि क्लोजरस्क्रिप्ट कंपाइलर क्लोजर में लागू किया गया है, क्लोजरस्क्रिप्ट मैक्रोज़ क्लोजर में क्लोजर में लिखा जाना चाहिए, क्लोजरस्क्रिप्ट नहीं। सौभाग्य से, डेटा संरचनाओं में हेरफेर करने की बात आने पर क्लोजर और क्लोजरस्क्रिप्ट लगभग समान हैं, इसलिए दो भाषाओं के बीच स्विचिंग मुश्किल नहीं है।

इसका मतलब यह है कि मैक्रो कोड क्लोजर दुनिया में निष्पादित हो जाता है और ब्राउज़र में नहीं, इसलिए इसे सादे क्लोजर में लिखा जाना चाहिए।

+1

और ऐसा इसलिए है क्योंकि क्लोजरस्क्रिप्ट Google क्लोजर कंपाइलर का उपयोग करता है I कल्पना ... क्लोजरस्क्रिप्ट में लिखे गए एक क्लोजरस्क्रिप्ट कंपाइलर अच्छा होगा। – islon

+2

Google क्लोजर कंपाइलर का उपयोग केवल अप्रयुक्त निर्भरताओं को हटाने और कोड को छोटा करने के लिए किया जाता है, क्लोजरस्क्रिप्ट को जावास्क्रिप्ट में संकलित नहीं करने के लिए। जब कोड Google क्लोजर कंपाइलर तक पहुंचता है तो पहले से ही जावास्क्रिप्ट है, हालांकि क्लोजरस्क्रिप्ट टीम कड़ी मेहनत कर रही है कि जावास्क्रिप्ट का उत्पादन सबसे उन्नत Google क्लोजर कंपाइलर सुविधाओं के लिए मान्य है। – Serabe

+5

संबंधित नोट पर, क्लोजरस्क्रिप्ट पर ClojureScript कंपाइलर पर [clojurescript.net] (http://clojurescript.net/) पर काम किया जा रहा है। लेखकों में से एक इस [इस वीडियो] में चर्चा करता है (http://www.infoq.com/presentations/cljs-in-cljs)। – bmaddy

संबंधित मुद्दे