У меня есть пример объекта
(define test-class%
(class object%
(super-new)
(field [test-field 3])
(field [test-field2 2])))
(define test-object (make-object test-class%))
Позже у меня есть код:
(set-data-field! env data-key test-field (+ val 1))
, что приводит к ошибке: 3.rkt: 1548: 42: test-field: несвязанный идентификатор в модуле: test-field
Я хочу передать идентификатор поля в set-data-field!потому что к хешированному объекту может обратиться любой поток, и он защищен с помощью этого кода:
(define (set-data-field! env key field val)
(let ([data (get-data env key)])
(if data
(let ()
(semaphore-wait (get-data-sem env))
(set-field! field (get-data env key) val)
(semaphore-post (get-data-sem env))
#t)
#f)))
Как я могу передать идентификатор поля, чтобы выполнить это?