ইমাস লিস্পের মধ্যে setqএবং এর defvarমধ্যে পার্থক্য কী ?
আমি একই প্রশ্নের সাধারণ লিস্প সংস্করণটি /programming/3855862 এ দেখছি । তারা কি এলিস্পে একই?
ইমাস লিস্পের মধ্যে setqএবং এর defvarমধ্যে পার্থক্য কী ?
আমি একই প্রশ্নের সাধারণ লিস্প সংস্করণটি /programming/3855862 এ দেখছি । তারা কি এলিস্পে একই?
উত্তর:
আপনার ইমাসকে এই প্রশ্নটি জিজ্ঞাসা করা উচিত C-h i:, এলিস্প ম্যানুয়ালটি ( m Elisp) চয়ন করুন এবং "ডিফভার" ( i defvar) এর জন্য সূচীটি অনুসন্ধান করুন । এটি আপনাকে ভেরিয়েবলগুলি সংজ্ঞায়িত করতে নিয়ে যায় ।
ইমাস আপনাকে জানায় যে defvarকোনও ডক স্ট্রিং সংযুক্ত করার অনুমতি দেয় এবং ভেরিয়েবলের যদি ইতিমধ্যে কোনও মান থাকে তবে এটি কিছুই করে না ।
এছাড়া ব্যবহার সম্পর্কে আপনি বলে defvarসঙ্গে কোনো মূল্যই নির্ধারিত হবে: (defvar foo)। এটি আপনাকে বলে যে এটি পরিবর্তনশীলকে গতিশীলভাবে বাদ দেওয়া হবে বলে ঘোষণা করে ।
setq এই সম্পত্তিগুলির কোনওটিই নেই।
defvarএবং setqইমাস লিস্প এবং কমন লিস্পে একইরকম, তবে একেবারে এক নয়।
defvarযাচ্ছে একটি বৈশ্বিক পরিবর্তনশীল (যেমনটি আবশ্যক প্রোগ্রামিং শৈলীতে) এবং কাস্টমাইজেশনের জন্য একটি কনভেনশন, যখন সেটকিক আরও কার্যকর ক্রিয়াকলাপের ভাষাগুলিতে আবদ্ধ (যেমন ডায়নামিক / লেক্সিকাল স্কোপিং নিয়মের সাথে নির্ভর করে যা গ্লোবাল স্কোপিং মোড সক্রিয় রয়েছে) .. .......)
setqভ্যার (উপস্থিতি) স্থানীয় কিনা তা বিবেচনা না করে একটি ভেরি মান সেট করে। defvarএকটি বৈশ্বিক হিসাবে একটি ঘোষিত। (এটি "বাফার-লোকাল "ও হতে পারে local-variable-p:)) একটি ফাংশন আর্গ হিসাবে আবদ্ধ বা letসাধারণ অর্থে" স্থানীয় " দ্বারা আবদ্ধ একটি ঘটনা var letইত্যাদি দ্বারা আবদ্ধ যদি কোনও বৈশ্বিক (বা বাফার-স্থানীয়) হয় তবে তার সময়কাল / সুযোগের জন্য এটির জন্য স্থানীয় বাইন্ডিং (স্বাভাবিক বোধ) তৈরি করা হয় let। এই বাঁধার সুযোগের মধ্যে, setqস্থানীয় মান পরিবর্তন করে। এটা একটা Var সম্পর্কে কথা বলতে ভালো সংঘটন একটি Var তাই থাকার চেয়ে (স্ট্যাক) স্থানীয় হচ্ছে অথবা (গাদা দিকে) গ্লোবাল।
M-x report-emacs-bugউন্নতিগুলির পরামর্শ দেওয়া আপনার পক্ষে সহায়ক হতে পারে যা অন্যকে এটি আরও সহজ হতে সহায়তা করে।