আমি কীভাবে একটি নির্দিষ্ট উপসর্গের সাথে সমস্ত প্রতীক সংজ্ঞাটি আবদ্ধ করতে পারি?


11

আমি আমার প্যাকেজটির API প্রায়শই ঘন ঘন পরিবর্তন করছি, তবে প্রতিটি সংজ্ঞায়িত চিহ্নটি (যেমনটি হওয়া উচিত) এর company-modeপরিসমাপ্তিতে টানছে । আমি দুর্ঘটনাক্রমে একটি আনবাউন্ড নাম ব্যবহার করতে চাই না, সুতরাং আমি কীভাবে বলব, যে সমস্ত ভেরিয়েবল এবং ফাংশনগুলি শুরু হয় তা আনবাইন্ড করব ? এর পরে, আমি কেবল আবার সক্ষম হব ।my-package-load-file

উত্তর:


10

unload-featureএলিস্প উত্স বা বাইট-সংকলিত ফাইল লোড করার অংশ হিসাবে সংজ্ঞায়িত সমস্ত প্রতীককে অপরিবর্তিত করার জন্য কল করুন। আপনার ফাইলটি শেষে কল provideকরে শেষ হয়েছে তা নিশ্চিত করুন । এটি ধরে নিয়েছে যে আপনি কোনও loadফাংশন দিয়ে বা এর মাধ্যমে ফাইলটি লোড করেছেন require, এটি C-M-x( eval-defun) বা অনুরূপ প্রক্রিয়া দ্বারা সংজ্ঞায়িত প্রতীকগুলিকে আবদ্ধ করবে না ।

আপনি যদি তাদের সংজ্ঞায়িত প্যাকেজটির ভিত্তিতে চিহ্নগুলির পরিবর্তে তাদের নামের উপর ভিত্তি করে চিহ্নগুলি আনবাইন্ড করতে চান তবে আপনি mapatomsসমস্ত চিহ্নগুলিতে পুনরাবৃত্তি করতে ব্যবহার করতে পারেন ।

(mapatoms (lambda (symbol)
            (if (string-prefix-p "foo-" (symbol-name symbol))
                (unintern symbol))))

দরকারী, তবে আমি বিশ্বাস করি না যে আমি বর্ণিত হিসাবে এটি ইন্টারেক্টিভ বিকাশের সাথে কার্যকর হবে। আমি featureসিস্টেমের চেয়ে এক স্তরের গভীর ; আমি কোনও স্পষ্ট গ্রুপিং ছাড়াই কেবল ফাংশন এবং ভেরিয়েবলের সাথে কাজ করছি। আমি মূল্যায়ন করতে বিরক্ত করিনি (provide 'my-package)
শন অলরেড

2
@ সানআলার্ড আমি ব্যবহার না করার একটি ভাল কারণ সম্পর্কে ভাবতে পারি না provide। তবে যাইহোক, আপনি যদি সত্যিই খারাপ জিনিসগুলি করতে চান তবে আমার সম্পাদনা দেখুন see
গিলস 'অশুভ হওয়া বন্ধ করুন'

ওহ, আমি ভালবাসি provide, আমি কেবল মনে করি না যে এটি এই ক্ষেত্রে কার্যকর হবে। ক্রিয়াকলাপগুলি মনে রাখে যে তাদের যদি ইন্টারেক্টিভভাবে মূল্যায়ন করা হত তবে তাদের কোন ফাইলটি সংজ্ঞায়িত করা হয়েছিল?
শন অলরেড

2
unload-featureআপনি যদি কোনও ফাইল (যা আছে provide) থেকে লোড না করে কোডটি মূল্যায়ন করেন তবে তার কোনও প্রভাব নেই ।
ড্রিউ

2
@ সানআলার্ড না, কেবলমাত্র ফাংশনগুলি মনে রাখে যে তারা যদি একটি সম্পূর্ণ ফাইল লোড করার অংশ হিসাবে লোড করা হয় তবে সেগুলি কোথায় থেকে লোড করা হয়েছিল।
গিলস 'অশুভ হওয়া বন্ধ করুন'

7
  • ব্যবহার করুন makunboundএকটি গতিশীল পরিবর্তনশীল যেমন একটি প্রতীক ব্যবহার সরিয়ে ফেলুন (অর্থাৎ, তার বাতিলযোগ্য করতে symbol-value)।

  • ব্যবহার করুন fmakunboundএকটি ফাংশন হিসাবে প্রতীক ব্যবহার সরিয়ে ফেলুন (অর্থাৎ, তার বাতিলযোগ্য করতে symbol-function)।

  • mapatomsসমস্ত চিহ্নগুলিতে পুনরাবৃত্তি করতে ব্যবহার করুন। symbol-nameআপনি আগ্রহী এমন বিশেষ উপসর্গের সাথে মিলিত হয়ে প্রত্যেকের সাথেই কাজ করুন: উভয়কে কল করুন makunboundএবং fmakunboundএটির মাধ্যমে।

  • আপনি uninternপ্রতীকগুলির প্রয়োজন নেই , যদি না আপনি নিজেরাই চিহ্নগুলির বিরুদ্ধে সম্পূর্ণতা ব্যবহার করেন এবং কেবল ভেরিয়েবল বা ফাংশন হিসাবে তাদের ব্যবহার না করে। কিন্তু আপনি যদি না সম্পূর্ণরূপে প্রতীক অপসারণ করতে চান তাহলে ব্যবহার unintern

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.