defvar
কোনও ভেরিয়েবলের মান, যেমন বলুন setq
বা ঠিক তেমনভাবে পুনরায় বরাদ্দ করে না
setf
। একবার ভেরিয়েবলের মান হয়ে গেলে defvar
এটি স্পর্শ করবে না।
থেকে defvar
এর docstring:
(defvar SYMBOL &optional INITVALUE DOCSTRING)
SYMBOL কে একটি ভেরিয়েবল হিসাবে সংজ্ঞায়িত করুন এবং SYMBOL ফিরিয়ে দিন।
...
INITVALUE alচ্ছিক আর্গুমেন্টটি মূল্যায়ন করা হয় এবং SYMBOL সেট করতে ব্যবহৃত হয়, যদি কেবল SYMBOL এর মান বাতিল হয়। যদি SYMBOL বাফার-স্থানীয় হয় তবে এর ডিফল্ট মান সেট করা হয়; বাফার-স্থানীয় মান প্রভাবিত হয় না। যদি INITVALUE অনুপস্থিত থাকে তবে সিমবোলের মান সেট করা নেই।
...
যেহেতু আপনি defvar
প্রথমটি লাইব্রেরিটি লোড করার সময় তাদের মানগুলি দেওয়ার জন্য প্রশ্নে ভেরিয়েবলগুলি সম্ভবত সম্পাদনা করেছেন তাই লাইব্রেরিটি পুনরায় লোড করা মানগুলি পরিবর্তন করবে না।
গ্লোবাল ভেরিয়েবলগুলি সংজ্ঞায়িত করতে এলিজপ ম্যানুয়াল নোডটিও দেখুন
।
নির্ভর করার পরিবর্তে defvar
, আপনি সর্বদা মানগুলি পুনরায় বরাদ্দ করতে পারেন setq
। বিকল্প হিসাবে, চতুর বিকল্প হিসাবে, আপনি unintern
প্রতীকগুলি যাতে defvar
এটিগুলি পুনরায় লোড করার সময় তাদের খুঁজে না পান:
(defvar test-1 "test this")
(defvar test-2 "test this one, too")
test-1 ; => "test this"
test-2 ; => "test this one, too"
(defvar test-1 "trying to redefine")
(defvar test-2 "trying to redefine, too")
test-1 ; => "test this"
test-2 ; => "test this one, too"
(mapc #'unintern '(test-1 test-2))
test-1 ; => error!
test-2 ; => error!
(defvar test-1 "trying to redefine")
(defvar test-2 "trying to redefine, too")
test-1 ; => "trying to redefine"
test-2 ; => "trying to redefine, too"
(unload-feature 'myname)
প্রথম হতে পারে ?