একক যুক্তি এবং কমা দিয়ে উদ্ধৃতিটি কী? (উদ্ধৃতি, যুক্তি)


15

(quote x)এক্সকে মূল্যায়ন করা যায় না, তবে ,এর xমধ্যে একটি যুক্ত করে quoteতা মূল্যায়ন করে। এরপরে এর সাথে কমা দিয়ে একক যুক্তি সহ উদ্ধৃতি ব্যবহার করার বিন্দুটি কী (quote ,x)?

বিরক্তিকর তীরগুলি থেকে 59 লাইন দ্বারা অনুপ্রাণিত :

(put (quote ,cmd) 'aa--alts ,alternatives)

কেন (put cmd 'aa-alts ,alternatives)সমানভাবে ভাল হয় না ?

উত্তর:


20

কমাটি ব্যাককোয়েটেড (ওরফে কোয়াসিকোয়েটেড) তালিকার প্রসঙ্গে ব্যবহৃত হয় , যা আপনাকে তালিকার কিছু অংশ বেছে বেছে মূল্যায়ন করতে দেয়। আরও দেখুন এই থ্রেড backquoting জন্য ব্যবহারের একটি উদাহরণ জন্য।

কয়েকটি সাধারণ উদাহরণ:

(setq a "a's value" b "b's value" c "c's value")
'(a  b  c)                              ; => (a b c)
`(,a b ,c)                              ; => ("a's value" b "c's value")

আপনি যে কমাগুলি উল্লেখ করছেন তা হ'ল ম্যাক্রো সংজ্ঞাতে যা পরিবর্তিতভাবে ব্যাককোটেড ব্যবহার করে progn:

(defmacro add-annoying-arrows-advice (cmd alternatives)
  `(progn
     (add-to-list 'annoying-commands (quote ,cmd))
     (put (quote ,cmd) 'aa--alts ,alternatives)
     (defadvice ,cmd (before annoying-arrows activate)
       (when annoying-arrows-mode
         (aa--maybe-complain (quote ,cmd))))))

,cmdব্যাককোটের মধ্যে আপনাকে cmdপ্রতীকের পরিবর্তে স্থানের মান রাখতে দেয় cmd


1
অ্যাকি, সুতরাং সামনে উক্তিটির prognঅর্থ হল যে আপনি যে মূল্যবান মূল্যবান হন তা সামনে আপনি কমা রাখতে হবে, যতই বাসা বাঁধে না কেন? ( ,cmdএটি অন্য তালিকার মধ্যে রয়েছে, সরাসরি এর মধ্যে নয় (progn)))
আনফুন বিড়াল

এটি পরীক্ষা করার ভাল সুযোগ বলে মনে হচ্ছে! মূল্যায়ন (setq a "a's value" b "b's value" c "c's value")এবং তারপরে মূল্যায়ন করার চেষ্টা করুন `(a '(,b c))
ড্যান

অন্যান্য নতুন: আপনার স্ক্র্যাচ বাফারে পাঠ্য যুক্ত করার জন্য মূল্যায়ন করতে, তারপরে আপনার কার্সারটিকে লাইনের শেষে রাখুন, তারপরে Cxe টিপুন।
আনফুন বিড়াল

11

কারণ এটি ম্যাক্রোর ভিতরে। একটি ম্যাক্রোর একটি লিস্প ফর্মটি ফেরত নেওয়া দরকার, যা পরে পরিবর্তিতভাবে মূল্যায়ন হয়।

উদাহরণস্বরূপ, এই ম্যাক্রোর প্রথম অনুরোধটির দিকে তাকানো:

(add-annoying-arrows-advice previous-line '(ace-jump-mode backward-paragraph isearch-backward ido-imenu smart-up))

আমাদের এক্সটেনশনটি ধারণ করতে হবে:

(put 'previous-line 'aa-alts '(ace-jump-mode backward-paragraph isearch-backward ido-imenu smart-up))

যা (quote ,cmd)অর্জন করে। যদি ম্যাক্রো cmdপরিবর্তে প্লেইন ব্যবহার করে, এটি আক্ষরিকভাবে রাখা হবে এবং সম্প্রসারণটি হবে:

(put cmd 'aa-alts '(ace-jump-mode backward-paragraph isearch-backward ido-imenu smart-up))

যা একটি ত্রুটি, কারণ cmdপরিবেশে যেখানে ম্যাক্রোকে আটকানো হয় তা সংজ্ঞায়িত হয় না।


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