나는 Lisp의 초보자이다. 두 개의 functions
, defparameter
및 defstruct
이 있습니다. 책이 inputBook
으로 전달 될 때마다 책의 제목 (문자열)을 defparameter
의 이름으로하고 싶습니다. 이것이 가능한가? "MobyDick"이 나와있는 곳에 문자열을 하드 코딩하려고했지만 오류가 발생합니다. 그래서 이것도 가능합니까? 단순히 매개 변수를 사용하려고 LISP : defparameters에서 문자열을 사용하는 방법
title
을 통과하지만 함수에 다른 책을 전달하려고하면, 그들은
title
하지만, 제 1 및 제 둘 수 없습니다 인쇄됩니다 전달 된 마지막에 할당 된 두
이다. 그렇다면 목록이나 해시 테이블이없는 "책"을 여러 개 보유하려면 어떻게해야합니까? 후자가 가능하지 않은 경우 defparameter
이 임의의 수의 책에 대해 (고유 한) 생성되고 getAuthor
함수를 통해 액세스 할 수 있도록 코드를 어떻게 변경할 수 있습니까? 말이 돼? (아래 기능을 참조하십시오.)
(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)))
많은 많은 사전 감사드립니다! 또한 초보자입니다. 나는 인터넷 검색을 통해 배우고 있으며 난 여기에서 난처한 상황에 처해있다.
난 당신이 뭘 하려는지 이해가 안 돼요. 왜'defparameter'를 사용하고 있습니까? – melpomene
getparameter를 사용하여 전역 변수를 만들면 getAuthor의 inputBook에서 만든 책에 액세스 할 수 있습니다. 나는 defparameter없이 그것을 시도하고 setq make-book을 사용했다. 그러나 getAuthor에 도착했을 때 그 책은 존재하지 않았다. –
그건 말이되지 않습니다. 어떻게 당신의 기능을 사용하고 있습니까? – melpomene