الحصول على المتغير foo غير مقيد بمحاولة استخدام برنامج تعليمي سريع للمشروع

StackOverflow https://stackoverflow.com/questions/5353441

  •  27-10-2019
  •  | 
  •  

سؤال

لقد اتبعت التعليمات هنا: http://xach.livejournal.com/278047.html وحملهم على العمل.لقد اتصلت باختبار المشروع، لذا لدي ملف test.lisp الذي يبدو كما يلي:

;;;; test.lisp

(in-package #:test)

;;; "test" goes here. Hacks and glory await!

(defun foo ()
    (format t "hello from EMAIL-DB package~%"))

عندما أقوم بتشغيل (ql:quickload "اختبار") أحصل على: The variable FOO is unbound.إذا قمت بالتعليق على السطر (in-package #:test)، فلن يعد foo غير مرتبط عندما أقوم بتحميله.مما يخبرني أن الوظيفة foo جيدة من الناحية النحوية.

ما الخطأ الذي افعله؟لماذا يكون foo غير منضم عند الاستخدام (ql:quickload "test")؟

إليك ملف الحزمة الخاص بي:

;;;; package.lisp

(defpackage #:test
  (:use #:hunchentoot))

وملف test.asd الخاص بي:

;;;; test.asd

(asdf:defsystem #:test
  :serial t
  :depends-on (#:hunchentoot
               #:cl-who
               #:postmodern)
  :components ((:file "package")
               (:file "test")))
هل كانت مفيدة؟

المحلول

حزمة الاختبار الخاصة بك لا تستخدم حزمة CL، لذا فإن DEFUN الخاص بك هو TEST::DEFUN (وليس CL:DEFUN).لا يوجد تعريف ماكرو للاختبار :: defun ، وبالتالي يستمر النظام في تقييم استخدام قواعد استدعاء الوظيفة ، والتي يجب تقييم كل شكل فرعي بالترتيب ، ثم تطبيق الوظيفة على قيم الوسائط.النموذج الفرعي الأول هو TEST::FOO، وهو بحث عن متغير - ولا يوجد متغير مثل TEST::FOO في صورتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top