% 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)