7.6.5.1. ジェネリック関数とメソッドのキーワード引数の例
例えば、下記の2つのwidth
メソッドが定義されていることを考えます。
defmethod width ((c character-class) &key font) ...)
(
defmethod width ((p picture-class) &key pixel-size) ...) (
その他のwidth
以外のメソッドとジェネリック関数は存在しないと仮定します。 下記のフォームを評価したときには、 キーワード引数:pixel-size
が適用可能なメソッドで受け付けられないため、 エラーが発せられます。
make-instance 'character-class :char #\Q)
(width (10) :font 'baskerville :pixel-size
下記のフォームの評価は、エラーが発せられます。
make-instance 'picture-class :glyph (glyph #\Q))
(width (10) :font 'baskerville :pixel-size
下記のフォームの評価は、もしcharacter-picture-class
という名前のクラスが、 picture-class
とcharacter-class
両方のサブクラスであった場合には、 エラーにはならないでしょう。
make-instance 'character-picture-class :char #\Q)
(width (10) :font 'baskerville :pixel-size