J'ai lu le guide de Racket 13.7.3 paramétrées Mixinsmixin: méthode a été référencé dans la définition, mais pas dans l'une des interfaces de-
J'utilise paramétrées Mixins pour créer une classe good-eat-fish%
de 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%))
Quand je lance le code l'erreur suivante est soulevée:
"mixin: method was referenced in definition, but is not in any of the from-interfaces
method name: eat
from-interfaces:"
est-ce que ce message d'erreur indique qu'il n'y a pas eat
méthode?
Si je change le code pour
(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))))
Je reçois cette erreur:
interface: bad syntax in: interface
Malheureusement, je ne sais pas pourquoi
interface() eat)
est mauvaise syntaxe.
Merci. Je l'ai. Sous votre aide, je corrige l'échantillon Parameterized Mixins. –