Ich bin ein Anfänger in Lisp. Ich habe zwei functions
, eine defparameter
, und eine defstruct
. Jedes Mal, wenn ein Buch an inputBook
übergeben wird, möchte ich den Titel des Buches (die Zeichenfolge) den Namen der defparameter
werden. Ist das möglich? Ich habe versucht, eine Zeichenfolge in wie unten zu codieren, wo es "MobyDick" sagt, aber ich bekomme einen Fehler. Ist das überhaupt möglich?LISP: So verwenden Sie Zeichenfolgen in defparameters
ich einfach versucht, den Parameter übergeben title
aber wenn Sie versuchen, ein anderes Buch in die Funktion zu übergeben, sie sind beide -title
zugewiesen, aber das letzte druckt bestanden, nicht die erste und nicht beide. Also wie kann ich es machen, damit ich so viele "Bücher" ohne eine Liste oder eine Hash-Tabelle habe?
Wenn letzteres nicht möglich ist, wie könnte ich den Code so ändern, dass ein defparameter
(einzigartig) für eine beliebige Anzahl von Büchern erstellt und über die getAuthor
-Funktion zugänglich ist? Ist das sinnvoll? (Bitte beachten Sie die folgenden Funktionen.)
(defstruct book()
(title) ;;title of the book, type string
(author) ;;author of the book, type string
(date)) ;; date of the book, type string or int
(defun inputBook(title author month year)
(defparameter "MobyDick" ;;I want this to use the parameter title
(make-book :title title
:author author
:date '(month year))))
(defun getAuthor (book)
(write (book-author book)))
Vielen vielen Dank im Voraus! Außerdem bin ich ein Anfänger Anfänger. Ich habe durch googeln gelernt und bin hier ratlos.
Ich verstehe nicht, was Sie zu tun versuchen. Warum benutzt du 'defparameter 'überhaupt? – melpomene
Ich benutze defparameter, um eine globale Variable zu erstellen, damit ich auf das Buch zugreifen kann, das in inputBook in getAuthor erstellt wurde. Ich habe versucht, es ohne Defarameter zu tun und habe nur setq make-book benutzt, aber als ich Author bekommen konnte, existierte das Buch nicht. –
Das macht keinen Sinn. Wie nutzen Sie Ihre Funktionen? – melpomene