明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1135|回复: 1

[求助]学substr功能的sublst问题

[复制链接]
发表于 2008-4-24 21:14 | 显示全部楼层 |阅读模式
我想做一个通用函数,仿substr的功能,对表进行截取,代码如下:
  1. ;(setq lst (list 1 2 3 4 5 6 7))
  2. ;测试(sublst lst 3 3)-->(3 4 5)
  3. ;测试(sublst lst 3 nil)-->(3 4 5 6 7)
  4. ;测试(sublst lst 3 8)-->(3 4 5 6 7)
  5. (defun sublst (lst start lenth / lst2 nlen)
  6. (setq lst2 (list))
  7. (if (or (null lenth) (> lenth (- (length lst) start)))
  8.   (setq lenth (1+ (- (length lst) start)))
  9. )
  10. (setq nlen (1- (+ start lenth)))
  11. (repeat lenth
  12.   (setq lst2 (cons (nth (setq nlen (1- nlen)) lst) lst2))
  13. )
  14. lst2
  15. )
现在发现lenth这个参数不能为空,比如(sublst 3),直接就给我报错误
; 错误: 参数太少
不知道这个问题能不能解决。也就是说defun可不可以指定可选参数?
发表于 2008-4-24 22:12 | 显示全部楼层

补一句:楼上部分代码是参考caoyin前辈的,感谢caoyin前辈的指点!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-10 07:43 , Processed in 0.134347 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表