2013-08-24 8 views

उत्तर

7

खोजने के लिए एक महत्वपूर्ण टिप्पणी लग सकता है: यह पता चला है कि इस तरह की चाल के लिए की जरूरत बहुत बार एक XY-समस्या होने वाला (कम चर अर्थ विज्ञान गलतफहमी के परिणाम के रूप)। आम तौर पर वहां कोई वास्तविक उपयोग-मामले नहीं होते हैं जहां आप वास्तव में यह चाहते हैं (कम में आप हमेशा डिफ़ॉल्ट मूल्य को परिभाषित करते हैं (इसलिए यह हमेशा मौजूद है) इच्छा पर ओवरराइड होने के लिए)। तो नीचे दी गई चाल का उपयोग करने से पहले, सुनिश्चित करें कि यह something else you want actually नहीं है।


यह काफी सरल (v1.4.0 के बाद से) है अगर आप (यानी वैश्विक या स्थानीय) एक ही क्षेत्र के लिए इस तरह के चर प्रदान करने के लिए जहां यह पहले से ही परिभाषित किया जा सकता है की जरूरत है:

@bar: 41; // comment/uncomment to test 

.define-bar-if-not-defined() {@bar: 42} 
.define-bar-if-not-defined(); // exposes a variable only if it's not already in this scope 

#using-global-bar { 
    global-bar: @bar; 
} 

#using-local-bar { 
    @bar: 43; // comment/uncomment to test 
    .define-bar-if-not-defined(); 

    local-bar: @bar; 
} 

हालांकि इस यदि आप स्थानीय दायरे में उपयोग किए जाने वाले वैश्विक/अभिभावक स्कोप वेरिएबल्स के लिए इसका उपयोग करने का प्रयास करते हैं तो विधि काम नहीं करेगी (और यदि आपको यह सुनिश्चित नहीं हो रहा है कि मूल चर संभवतः कौन सा दायरा हो सकता है तो यह एक सामान्य विधि की आवश्यकता हो सकती है) :

#using-unknown-bar-in-local-scope { 
    // ... some code ... 

    .define-bar-if-not-defined(); // won't override local @bar (if any) but always overrides global and parent scope @bar 

    bar: @bar; 
} 

उस मामले में मुझे किसी भी सीधे-आगे समाधान नहीं पता है (w/o कुछ इनलाइन जावास्क्रिप्ट हैक्स उदाहरण के लिए गार्ड अभिव्यक्ति में उपयोग कर सकते हैं)

+0

किसी भी कारण से यह विधि किसी भी अंदर @ आयात स्ट्रिंग। वैरिएबल कहने से कम संकलक त्रुटियां अनिर्धारित हैं, भले ही आप इसे स्टाइल परिभाषाओं में उपयोग कर सकें। – cameronhimself

+0

@cameronhimself यह अपेक्षा की जाती है क्योंकि मिश्रणों का मिश्रण मिश्रण से पहले किया जाता है। किसी भी तरह से, अब तक मैंने कोई उपयोग-मामला नहीं देखा है जहां ऐसी कार्यक्षमता बिल्कुल जरूरी होगी (मैंने अभी प्रश्न को एक हाइपोटेटिक के रूप में उत्तर दिया है)। इस तरह की सुविधा के लिए प्रत्येक अनुरोध आम तौर पर कम विवरणों को सामान्य रूप से कैसे काम करता है, इस बारे में गलतफहमी का परिणाम बनता है (इस प्रकार यह "XY समस्या" है, अधिक जानकारी के लिए [# 1400] (https://github.com/less/less। जेएस/मुद्दे/1400), [# 1706] (https://github.com/less/less.js/issues/1706) और इसी तरह)। –

+0

@cameronhimself दूसरे शब्दों में यदि आपके पास एक विशिष्ट उपयोग-मामला है जहां आपको लगता है कि आपको इस तरह की चाल की आवश्यकता है - इसे पोस्ट करें - मुझे पूरा यकीन है कि इसे इस तरह के हैक को बहुत आसान तरीके से हल किया जा सकता है। –

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