سؤال

وأنا باستخدام DrScheme للعمل من خلال SICP، ولقد لاحظت أن بعض الإجراءات (على سبيل المثال، square) تعتاد مرارا وتكرارا. أود أن وضع هذه في ملف منفصل حتى أستطيع أن تدرجها في برامج أخرى دون الحاجة إلى إعادة كتابة لهم في كل مرة، لكنني لا يمكن أن يبدو لمعرفة كيفية القيام بذلك.

ولقد حاولت:

(load filename)
(load (filename))
(load ~/path-to-directory/filename)
(require filename)
(require ~/path-to-directory/filename)
(require path-from-root/filename)

وأي من هذه الأعمال. من الواضح انني استيعاب في القش - أي مساعدة هي محل تقدير كبير

هل كانت مفيدة؟

المحلول

وليس من الواضح من سؤالك عن المستوى الذي كنت تستخدم اللغة؛ بعض اللغات إرث قد تجعل آليات معينة غير متوفرة.

وأفضل آلية إدراج / التجريد هو أن وحدات.

أولا، تعيين مستوى لغتك إلى "وحدة". ثم، إذا كان لدي هذين الملفين في نفس الدليل:

وملف يستخدم-square.ss:

#lang scheme

(require "square.ss")

(define (super-duper x) (square (square x)))

وsquare.ss الملف:

#lang scheme

(provide square)

(define (square x) (* x x))

وبعد ذلك يمكنني ضرب "المدى" على "يستخدم-square.ss" العازلة وكل شيء يعمل بالطريقة التي تتوقعها.

والتحذير: كود لم تختبر

نصائح أخرى

وأعتقد كنت تبحث عن:

(include "relative/path/to/scheme/file.scm")

وو(يتطلب) التعبير عن وحدات التحميل.

في MIT نظام / GNU، يمكنك تحميل ملف بشيء من هذا القبيل:

(load "c:\\sample-directory\\sample-file.scm")

ولكن لا أعرف ما اذا كان يعمل في DrScheme.

(require "~/path-to-directory/filename")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top