এসএক্সে এখানে সমস্ত ডক এবং পোস্টের একগুচ্ছ পড়ার পরেও আমি বাফার-লোকাল ভেরিয়েবলের সমস্ত প্রকারভেদগুলিতে পুরোপুরি পরিষ্কার নই।
আমার বোঝার সংক্ষিপ্তসার এখানে:
(defvar foo ..)
ফাইলের জন্য একটি গতিশীল পরিবর্তনশীল ঘোষণা করে। তবে ভেরিয়েবলটি (1) অন্য ফাইলগুলির সাথে পরিচিত না হয় যতক্ষণ না defvar
সেগুলিতে পাশাপাশি একটি বিবৃতি অন্তর্ভুক্ত করা হয় এবং (2) ভেরিয়েবল স্থানীয়ভাবে নয়, স্কোপের ক্ষেত্রে বিশ্বব্যাপী।
(make-variable-buffer-local foo)
defvar
উপরের অংশটি সংকলক এবং অন্য সবাইকে বলার পরে যে ভেরিয়েবল foo সেট করা থাকে সেদিকেই এটি যে কোনও জায়গায় বাফার-লোকাল হিসাবে বিবেচনা করা উচিত। সুতরাং এই প্যাটার্নটি একটি বাফার-লোকাল ভেরিয়েবল ডিক্লেয়ারের জন্য ভাল স্টাইল, উভয় স্টেটমেন্টকে ফাইলের পিছনে পিছনে রাখবে।
(defvar xxx ...) ;declare xxx with global scope
(make-variable-buffer-local 'xxx) ;but now make it buffer-local everywhere
সুবিধার্থে, (defvar-local xxx ...)
ফর্মটি উপরের দুটি লাইনের জায়গায় এক লাইন হিসাবে ব্যবহার করা যেতে পারে:
(defvar-local xxx ...) ;make xxx buffer local everywhere
উপরের মত ঘোষিত হয়ে গেলে, ভেরিয়েবল এক্সএক্সএক্স সেটেক স্টেটমেন্টে অন্য কোনও ভেরিয়েবলের মতো ব্যবহার করা যেতে পারে।
যদি আমি কেবল বাফার-লোকাল ভেরিয়েবলের একক উদাহরণ পেতে চাই যা ইতিমধ্যে একটি গ্লোবাল ডায়নামিক ভেরিয়েবল, আমি নীচের ঘোষণাগুলি ব্যবহার করব use প্রথমটি গ্লোবাল-স্কোপ ডায়নামিক ভেরিয়েবল ঘোষণা করে এবং দ্বিতীয় বিবৃতিটি বর্তমান বাফারে সেই পরিবর্তনশীলটির একটি বাফার-স্থানীয় সংস্করণের মাত্র একটি উদাহরণ তৈরি করে:
(defvar xxx ...) ;declare xxx with global scope
(make-local-variable 'xxx) ;make xxx local in this buffer only
এখন আমার স্পষ্টবাদী প্রশ্নের জন্য (উপরের সমস্তটি আমার বোঝাটি সঠিক কিনা তা নিয়ে অন্তর্ভুক্ত প্রশ্নগুলি ছিল)।
ভেরিয়েবলের মান সেট করার সময়, আমি setq
বা
ব্যবহার করতে পারি setq-local
। কখন setq-local
ব্যবহার করা উচিত ? কেন?
আমি যদি setq-local
বাফার-লোকাল ওয়ার্স, বা নন-বাফার-লোকাল ভার্সে ব্যবহার করি তবে কী হবে ?
হয় setq-local
একটি জন্য প্রয়োজন বোধ করা defvar-local
ঘোষিত পরিবর্তনশীল?
হবে setq-local
একটি স্বাভাবিক উপর defvar
ঘোষিত পরিবর্তনশীল একটি বাফার-স্থানীয় পরিবর্তনশীল সেটিকে পালা? (অন্য কথায়, setq-local
কোনওভাবে কোনও (make-variable-local xxx)
ঘোষণার সমতুল্য ?
(setq-local VAR VALUE)
কেবল শর্টহ্যান্ডের জন্য (set (make-local-variable VAR) VALUE)
, যা ছিল একটি সাধারণ প্রতিমা।