7.6.5.1. ジェネリック関数とメソッドのキーワード引数の例

UP


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-classcharacter-class両方のサブクラスであった場合には、 エラーにはならないでしょう。

(width (make-instance 'character-picture-class :char #\Q)
       :font 'baskerville :pixel-size 10)

TOP, Github