Irgendwo/wann hatten wir das Thema mit den LISP Packages schon mal. Ich hab's gerade nicht wieder gefunden.
Wie ist das denn nun wieder mit den LISP Packages?
Erklärt an einem Beispiel:
Wir haben eine Funktion `my-function`, die im `:cadde` Package definiert ist.
Aufrufen wollen wir diese im Package `:my-company`.
- mal ist die Funktion exportiert, sagen wir "öffentlich gemacht" (so wie die ganzen Funktionen aus dem Integration Kit) / mal nicht
- mal nutzen wir das `:cadde`-Package in unserem `:my-company` / mal nicht
- mal geben wir das package beim Funktionsaufruf an, mal nicht.
Daraus ergeben sich diverse Kombinationen. (siehe auch Image anbei)
![](https://ww3.cad.de/foren/ubb/uploads/der_Wolfgang/package_examples_table.png)
Und das ganze als (nicht ladbare!!) LISP Datei zum Vergleich: https://ww3.cad.de/foren/ubb/uploads/der_Wolfgang/package_examples.lsp
Empfehlungen
Fange deine Dateien immer mit den package Definitionen an:
Code:
(in-package :my-company)
(use-package :oli)
Sobald ein `:use-package` Anweisung vorhanden ist sind alle von dort exportierten LISP Symbole
im `:in-package` direkt (also ohne Package:-prefix) verfügbar.
EINE Lisp Datei sollte immer nur EIN `in-package` enthalten.
Code:
(in-package :my-company)
Bei Unstimmigkeiten ist es ggf. hilfreich zu wissen welches das 'current package' ist:
Code:
(format T "~&my current package is [~S]~%" LISP::*PACKAGE*) ; Ausgabe in der Konsole
(display (format nil "~&my current package is [~S]~%" LISP::*PACKAGE*)) ; Ausgabe in der Modeling display box
Ein Package:-prefix ist zum Testen auf der Kommandline / für einen Einzeiler okay.
Ansonsten sollte man den eher im LISP code vermeiden, wenn's denn geht.
------------------
● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ●
[Diese Nachricht wurde von der_Wolfgang am 28. Nov. 2023 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP