Возможно ли в ракетке получить все поля объекта одновременно?получить все поля объекта
Я хотел бы в основном преобразовать объект в хэш-таблицу с именами полей в качестве ключей и значений полей в качестве значений.
Я нашел функцию (имена полей obj), но тогда я не знаю, как использовать возвращаемые имена полей, чтобы получить значения из obj. Функция get-field
может быть использована для получения значения поля, но я не знаю, как использовать его со значением:
> (define x% (class object% (init-field x y) (super-new)))
> (define obj (make-object x% 1 2))
> (get-field x obj)
1
> (field-names obj)
'(y x)
> (define field-name (second (field-names obj)))
> field-name
'x
> (get-field field-name obj)
get-field: given object does not have the requested field
field name: field-name
object: (object:x% ...)
errortrace...:
context...:
/usr/lib/racket/collects/racket/private/class-internal.rkt:4906:0: obj-error29
/usr/lib/racket/collects/racket/private/misc.rkt:87:7
Эта вещь на инспекторах сложна в лучшем случае. Нет реальных документов и/или примеров использования/образцов для передового опыта. –