Я пытаюсь создать структуру в Racket, поскольку я преподавал ее себе, и я пытался справиться с различными практическими проблемами для этого. Сейчас я пытаюсь создать структуру, которая имеет следующие характеристики:Как написать предложение охраны в структуре, которая возвращает более одного значения
имя:
grade
поля:
midterm
(должно быть целым числом и больше 0
final
(должен быть целое и больше 0)
course
(должно быть либо символом, либо ложным)
То, что я написал до сих пор это
(struct grade (midterm final course)
#:guard (λ (midterm final course name)
(unless (and (integer? final) (> final 0))
(error "not a valid final grade"))
(unless (and (integer? midterm) (> midterm 0))
(error "not a valid midterm grade"))
(unless (or (symbol? course) (false? course))
(error "not a valid course grade"))
'(midterm final course)))
Но это нереализуемое. Я верю, потому что предложение охраны возвращает список '(midterm final course)
, но другие реализации, которые я пробовал, которые включали предложение охраны, возвращающее (midterm final course)
и только midterm final course
, также не помогли. Что я могу сделать, чтобы эта оговорка охранника работала?
Спасибо! Я понятия не имел, что существуют «ценности». Это потрясающе. –