明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3300|回复: 5

apply 将参数表传给指定的函数

  [复制链接]
发表于 2012-9-2 19:47:36 | 显示全部楼层 |阅读模式

将参数表传给指定的函数

(apply ’function list)

参数

’function

函数,可以是表示 defun 或 lambda 表达式的符号。

list

表。如果函数不接收参数,则该参数为 nil。

返回值

函数调用的结果。

示例

命令: (apply '+ '(1 2 3))

6

命令: (apply 'strcat '("a" "b" "c"))

"abc"

本帖被以下淘专辑推荐:

  • · 基础|主题: 9, 订阅: 0

相关帖子

 楼主| 发表于 2012-9-2 19:47:50 | 显示全部楼层
示例预留
发表于 2012-10-5 16:55:31 | 显示全部楼层
;画一条直线
(defun c:XX()
    (setq a '("line" (0 0) (100 100) ""))
    (apply 'command a)
)
发表于 2014-12-4 18:15:31 | 显示全部楼层
  1. ;求点表中心
  2. (defun avg_pts (lst / n)
  3.   (setq n (float (length lst)))
  4.   (mapcar '/ (apply 'mapcar (cons '+ lst)) (list n n n))
  5. )

  6. (defun avg_pts2        (lst / n)
  7.   (setq n (float (length lst)))
  8.   (mapcar (function (lambda (x) (/ x n)))
  9.           (apply 'mapcar (cons '+ lst))
  10.   )
  11. )
发表于 2014-12-4 18:16:04 | 显示全部楼层
  1. ;;从点列表(point list)得到坐标范围(coordinate extents).
  2. (defun GetExtents (plist /)
  3.   (list
  4.     (apply 'mapcar (cons 'min plist))
  5.     (apply 'mapcar (cons 'max plist))
  6.   )
  7. )
发表于 2014-12-6 13:23:27 | 显示全部楼层
;; if you only want the X and Y values
(setq p (apply '(lambda (x y z)(list x y))(getpoint "\nPick a point: ")))

;; if you want to reverse the X and Y values
(setq p (apply '(lambda (x y z)(list y x))(getpoint "\nPick a point: ")))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 21:00 , Processed in 0.194572 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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