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