2016-12-09 6 views
1

Я знаю, как проверить, есть ли элемент в списке: (when (member item list :test #'equalp)). Если у меня есть список структур книги:Member и structs in Lisp

(defstruct book 
    name 
    author 
) 

как я могу проверить, если книга из определенного автора является членом списка (независимо от имени)? Я знаю, что это очень начинающий вопрос, и я попытался найти ответ сам, но не смог.

ответ

2

Что вы ищете :key argument:

(find author library :test #'string= :key #'book-author) 

То же самое с member:

(member (book-name my-book) library :test #'string= :key #'book-name) 

Обратите внимание, что :key не вызывается на item.

+0

Благодарим вас за ответ. Предположим, что я хочу использовать 'member', а не' find'. Будет ли это что-то вроде '(библиотека book1 группы: test # 'equalp: key #' book-author)'? (Предположим, я хочу знать, есть ли в библиотеке книга с тем же автором, что и book1. –

+1

': key' не вызывается' item'. Пожалуйста, см. edit. – sds