多态性(正如我所理解的)基本上意味着你有一个单一的函数调用,它接受不同类型的信息,但输出相同的结果。在这种情况下,所有这些函数在代数上基本相同。假设您想编写一个函数,可以在其中输入任意两个,并确保返回第三个。
我的C书给出了一个例子。。我会把它翻译成LISP,这样你就可以看到这个理论是什么了。显然,这不起作用,但C++中类似的设置显然会起作用。
- ; Create two functions
- (defun square(pt1 pt2 pt3 pt4 / )
- (command "pline" pt1 pt2 pt3 pt4 pt1 "")
- )
- (defun square(pt1 length width / )
- (command "rectang" pt1 (list (+ (car pt1) width) (+ (cadr pt1) height) (caddr pt1)))
- )
- ; Create a square two different ways, but call the same function
- (square '(0 0 0) '(0 1 0) '(1 1 0) '(1 0 0))
- (square '(0 0 0) 1 1)
如果这是在C++中呈现和编译的,它将工作。编译后的程序将根据输入自动知道使用哪个版本的(square)。我认为将其转换为LISP的唯一方法是手动检查数据,我相信这完全可行,但这并不能阻止我思考是否有创造性的替代方案。
是的,这确实归结为我的另一个完全无用的猜测。但是嘿,如果这能让你们思考的话,任务完成了~ |