যখন নির্দিষ্ট গ্রন্থাগারগুলি ডিজাইনে অনুপস্থিত হতে পারে তখন "সতর্কতা: ফ্রি ভেরিয়েবলের অ্যাসাইনমেন্ট" দিয়ে কাজ করা


12

আমার মোডের বাইট সংকলন:

(defun dict-setup-expansions ()
  "Add `dict-mode' specific expansions."
  (set (make-local-variable 'er/try-expand-list) (list #'dict-mark-article)))

সতর্কতা দেয়:

Warning: assignment to free variable `er/try-expand-list'

এটি স্বাভাবিক পরিস্থিতি কারণ er/try-expand-listবহির্ভাগে সংজ্ঞায়িত হয়; http://elpa.gnu.orgexpand-region এ থাকা লাইব্রেরি

আমার মোডটি expand-regionলাইব্রেরিতে রেজিস্ট্রার প্রসারণ করুন তবে মোড ছাড়াই আমার মোডটি চালানো ঠিক expand-region

আমি মনে করি সতর্কতার সাথে মোকাবিলা করার উপযুক্ত উপায় হ'ল ঘোষণা যুক্ত করা:

(defvar er/try-expand-list)

defvar ডকস বলেছেন:

The `defvar' form also declares the variable as "special",
so that it is always dynamically bound even if `lexical-binding' is t.

আমি ব্যবহার -*- lexical-binding: t -*-। তার মানে কি defvarভেরিয়েবল ছাড়া er/try-expand-listলেক্সিকাল স্কোপে থাকতে পারে এবং আমার আসল বাগ রয়েছে?


2
পার্শ্ব নোট: আপনি চিহ্নটি উদ্ধৃতি করা উচিত নয় (defvar er/try-expand-list)
জিনপিয়েরে 27'16

@ জিনপিয়ের ফিক্সড
gavenkoa

উত্তর:


10

না, setএবং setqলেক্সিকাল ভেরিয়েবলগুলি ঘোষণা করবেন না। শুধু letকরে। আপনি যদি letএখানে ব্যবহার করতেন আপনার একটি বাগ থাকত তবে এটি ঠিক আছে। গতিশীল ভেরিয়েবল ব্যবহার করার সময় টাইপগুলি ধরার জন্য সতর্কতাটি বিদ্যমান exists

সতর্কবার্তাটি defvarআপনার প্রশ্নের মতো ব্যবহার করতে দূরে সরাতে , তবে প্রতীকটি উদ্ধৃত করবেন না


রিডান্ট্যান্টের মধ্যে মোড়ানো কি eval-when-compileকেবল defvar? আমি ছাড়া কোনও সতর্কতা দেখছি না eval-when-compileeval-when-compileসক্রিয় কোড ব্যবহার করা প্রয়োজন বলে মনে হচ্ছে এটি প্রয়োজনীয় (require ...)...
gavenkoa ২

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