我正在阅读“Practical Common Lisp”,我想知道Common Lisp是否支持Duck-Typing,例如红宝石?
在Ruby中,只要它实现了一个带有调用者假定的名称和参数列表的方法,就可以在一个对象上调用一个方法而不管该类。
CLOS怎么样?是否可以在不考虑类的情况下调用对象,只需假设泛型函数可以处理它。也许不需要鸭子输入,因为CLOS不遵循消息传递哲学,方法也没有绑定到类。
答案 0 :(得分:14)
也许不需要鸭子输入,因为CLOS不遵循传递哲学的消息,并且方法没有绑定到类。
情况确实如此。每个泛型函数都可以动态地专用于某个类。还可以有默认实现。由于Lisp使用动态类型,因此可以使用任何类型的参数调用每个函数,对于泛型函数,基于参数类型的调度决策是在运行时获取的。