Racket ガイド 13.7.3 Parameterized Mixins を読みました
パラメータ化された Mixin を使用してクラスを作成し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)
構文が悪いです。