vl-sort-i (AutoLISP)

指定された比較関数にしたがってリスト内の要素をソートし、要素のインデックス番号を返します。

サポートされているプラットフォーム: Windows および Mac OS

構文と要素

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

タイプ: リスト

ソートするリスト。

comparison-function

タイプ: サブルーチンまたはシンボル

比較関数。これは、2 つの引数を受け入れ、第 1 引数が第 2 引数よりもソート順が前の場合は T (または nil 以外の任意の値)を返すような任意の関数です。comparison-function 引数の値は、次の形式のいずれかが指定可能です。

  • シンボル(関数名)
  • '(LAMBDA (A1 A2) ...)
  • (FUNCTION (LAMBDA (A1 A2) ...))

戻り値

タイプ: リスト

comparison-function 引数で指定された順序で並べ替えた lst の要素のインデックスの値を含んだリスト。重複した要素は、結果でも保持されます。

文字のリストを降順にソートします。

(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」が 2 つ存在していることに注意してください。

2D 点のリストを Y 座標でソートします。

(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 が 2 つ存在していることに注意してください。