मैं जांचना चाहूंगा कि क्या कुछ (कहते हैं, वर्तमान) बफर एक फ़ाइल पर जा रहा है या नहीं। मैं कह सकता था:
(if (buffer-file-name) ...)
लेकिन ऐसा लगता है कि यह बहुत सुरुचिपूर्ण नहीं है - मुझे जो दिलचस्पी है वह केवल बूलियन मूल्य है, प्रश्न में बफर का वास्तविक नाम नहीं है । यदि buffer-file-name
फ़ंक्शन एलिस्प में लिखा गया था, तो मैं इसका स्रोत देखने के लिए पता लगा सकता हूं कि यह क्या उपयोग करता है - लेकिन यह सी में लिखा गया है, और जब मैं एमएसीएस स्रोतों को स्थापित कर सकता हूं, तो मुझे डर है कि मुझे एक संभावित नाम नहीं मिलेगा फ़ंक्शन के लिए जो कि वैसे भी मैं वहां होने के बाद जांच करता हूं।
मुझे इसकी आवश्यकता है कि क्या मैं वर्तमान बफ़र फ़ाइल के नाम के आधार पर एक निर्देशिका बनाना चाहता हूं, और वर्तमान में मैं कम या ज्यादा कर रहा हूं:
(make-directory (if (buffer-file-name) (file-name-base) "default-dir"))
तो, ऐसा करने का एलिस्प-मुहावरेदार तरीका क्या होगा?
(and (buffer-file-name) t)
अजीब लग रहा है।
(if (buffer-file-name) ... )
यह सुरुचिपूर्ण है, तो आप बहुत लंबे समय तक क्विज़ में कोडिंग नहीं कर रहे हैं। यह केवल यहाँ से बदसूरत हो जाता है।
buffer-file-name
वास्तव में उपयोग करने पर आपत्ति क्यों करते हैं , यह करने का सही तरीका है (यदि आप वास्तव में चाहते हैंt
, तो करें(and (buffer-file-name) t)
लेकिन यह बदसूरत आईएमओ है)। इसका कार्यान्वयनfilename
बफर सी संरचना के क्षेत्र को पढ़ रहा है , जो वैसे भी सीधे एलिस्प से सुलभ नहीं है। अंत में, यह सिर्फ एक संकेतक है जो या तो अशक्त है या नहीं।