Прочетох ръководството за ракети 13.7.3 Параметризирани миксини
Използвам параметризирани миксини, за да създам клас good-eat-fish%
от fish%
(define fish-interface
(interface () eat get-size))
(define fish%
(class* object% (fish-interface)
(init size)
(super-new)
(define current-size size)
(define/public (get-size) current-size)
(define/public (eat other)
(set! current-size (+ current-size (send other get-size))))))
(define (good-eat-mixin member-name)
(define eat member-name)
(mixin () ()
(inherit eat)
(define/public (good-eat y)
(eat y) (eat y))))
(define good-eat-fish%
((good-eat-mixin (member-name-key eat)) fish%))
Когато стартирам кода, се появява следната грешка:
"mixin: method was referenced in definition, but is not in any of the from-interfaces
method name: eat
from-interfaces:"
Това съобщение за грешка показва ли, че няма метод eat
?
Ако променя кода на
(define (good-eat-mixin member-name)
(define eat member-name)
(mixin (interface () eat) (interface () eat good-eat)
(inherit eat)
(define/public (good-eat y)
(eat y) (eat y))))
Получавам тази грешка:
interface: bad syntax in: interface
За съжаление, не знам защо
interface () eat)
е лош синтаксис.