CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2023 开发者帮助

vl-sort-i (AutoLISP)

2024-5-18 18:53| 发布者: admin| 查看: 76| 评论: 0|原作者: admin|来自: AutoCAD

vl-sort-i (AutoLISP)

根据给定的比较函数对列表中的元素进行排序,并返回元素索引号

支持的平台:Windows 和 Mac OS

签名

(vl-sort-i lst comparison-function)
LST

类型:列表

要排序的任何列表。

比较函数

类型:子例程或符号

比较函数。这可以是接受两个参数并返回(或任何非值)的函数,如果第一个参数在排序顺序中位于第二个参数之前。比较函数值可以采用以下形式之一:Tnil

  • 符号(函数名称)
  • '(LAMBDA (A1 A2) ...)
  • (FUNCTION (LAMBDA (A1 A2) ...))

返回值

类型:列表

包含 lst 元素的索引值的列表,按 comparison-function 指定的顺序排序。重复的元素将保留在结果中。

例子

按降序对字符列表进行排序:

(vl-sort-i '("a" "d" "f" "c") '>)
(2 1 3 0)

排序列表顺序为“f”、“d”、“c”、“a”;“f”是原始列表中的第 3 个元素(索引 2),“d”是列表中的第 2 个元素(索引 1),依此类推。

按升序对数字列表进行排序:

(vl-sort-i '(3 2 1 3) '<)
(2 1 3 0)

请注意,结果列表中会考虑两次出现的 3。

Y 坐标对 2D 点列表进行排序:

(vl-sort-i '((1 3) (2 2) (3 1))
         (function (lambda (e1 e2)
                (< (cadr e1) (cadr e2)))))
(2 1 0)

对符号列表进行排序:

(vl-sort-i
   '(a d c b a)
   '(lambda (s1 s2)
    (< (vl-symbol-name s1) (vl-symbol-name s2))))
(4 0 3 2 1)

请注意,这两个 都在结果列表中被考虑在内。a


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1   苏公网安备32011402011833)

GMT+8, 2024-12-15 22:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部