2014-11-17 2 views
0

Мне удалось определить структуру с одним полем, как определить несколько полей в одной структуре или классе?Краткая схема R5RS определяет структуру или класс с несколькими полями

Я новичок в R5RS, я могу найти только проблемный код, пожалуйста, посмотрите на него как псевдокод, выражающий то, что я пытаюсь сделать.

(define recipe 
    (let (salt 5) 
     (sauce "ketchup"))) 

или

(define recipe 
    '((let salt 5) 
    (let sauce "ketchup"))) 

Что наиболее кратким и распространенный способ (ы), чтобы сделать это?

ответ

1

Большинство схемных реализаций предоставляют записи через SRFI 9. Так что в вашем случае, вы можете определить тип recipe записи следующим образом:

(define-record-type <recipe> 
    (recipe salt sauce) 
    recipe? 
    (salt recipe-salt) 
    (sauce recipe-sauce)) 

Затем вы можете использовать его как это:

> (define salty-ketchup (recipe 5 "ketchup")) 
> (recipe-salt salty-ketchup) 
5 
> (recipe-sauce salty-ketchup) 
"ketchup" 

Если вы используете рэкет, есть еще более простой синтаксис для определения структур.

(struct recipe (salt sauce)) 
Смежные вопросы