只需一步,快速开始
使用道具 举报
“重载”在C#的学习过程中遇到过,是非常不错的功能。LISP在这方面差了。。。
同一个函数名,可以定义无数个。每一个函数的参数类型及数量都不一样(也可以一样)。
举个例子:
(defun DXF (A B)
(+ A B)
)
(defun DXF (lst)
(car lst)
(defun DXF (str i len)
(substr str i len)
在LISP里面,只能最后一个DXF函数起作用,后面的会覆盖掉前面的定义。
而有了“重载”功能。每个DXF函数都能起作用。
楼主这样子的做法,某种程度上会遇到麻烦。
LISP真的要重载,其实只要提供一个LIST类型的参数。即
(defun Fun (LST)
(setq A (nth 0 LST))
(setq B (nth 1 LST))
;;etc....
查看全部评分
你把我弄糊涂了,搞个“重载”这么高级的名词。
但是所举的例子,这是lisp最稀松平常的应用啊。
carrot1983 解释得很充分。
补充一点:C#可以使多个函数体使用同一函数名,实质上编译器是将用户函数名加上参数类型,作为新的内部函数名。
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2024-11-6 07:22 , Processed in 0.179187 second(s), 30 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.