如何指定方法参数是(例如)字符串的列表



在CLOS中,如何指定方法参数是(例如)字符串的列表?

。比如:

(defmethod m1 ((x (every 'string)))  
(dolist (y x) (print (char y 0)))) 

你不能。方法只能对进行专门化,不能对类型进行专门化。您可以用deftypesatisfies手动定义类型list-of-strings,但将其用作defmethod.

中的专门化符仍然无效。来自CLHS的定义方法条目:

只能专门化必需的参数。如果parameter-特殊化器-name是一个符号,它命名一个类。

最新更新