「Vl-sort」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
20行目: 20行目:


; サンプル
; サンプル
<pre class="brush:autolisp;">
<syntaxhighlight lang="lisp" line>
; 数値のリストをソート。
; 数値のリストをソート。
(vl-sort '(3 2 1 3) '<)  
(vl-sort '(3 2 1 3) '<)  
38行目: 38行目:
  (< (vl-symbol-name s1) (vl-symbol-name s2)) ) )  
  (< (vl-symbol-name s1) (vl-symbol-name s2)) ) )  
(A B C D) ; 結果のリストに A が 1 つしか残っていないことに注意  
(A B C D) ; 結果のリストに A が 1 つしか残っていないことに注意  
</pre>
</syntaxhighlight>
 
[[Category:AutoLISP]]
[[Category:AutoLISP]]

2019年7月7日 (日) 10:33時点における版

構文
(vl-sort list comparison-function)


機能
指定された比較関数にしたがってリスト内の要素をソートする。
引数
  • list : 任意のリスト。
  • comparison-function : 比較関数。これは、2 つの引数を受け入れ、第 1 引数が第 2 引数よりもソート順が前の場合は T(または nil 以外の任意の値)を返すような任意の関数。
comparison-function 引数の値は、次の形式のいずれかが指定可能。
シンボル(関数名)
'(LAMBDA (A1 A2) ...)
(FUNCTION (LAMBDA (A1 A2) ...))


戻り値
comparison-function 引数で指定された順序で並べ替えた list の要素を含んだリスト。 重複した要素がリストから削除されることがある。
サンプル

<syntaxhighlight lang="lisp" line>

数値のリストをソート。

(vl-sort '(3 2 1 3) '<) (1 2 3) ; 結果のリストに 3 が 1 つしか含まれていないことに注意。

---
2D 点のリストを Y 座標でソート。

(vl-sort '((1 3) (2 2) (3 1))

 (function (lambda (e1 e2) 
   (< (cadr e1) (cadr e2)) ) ) ) 
 ((3 1) (2 2) (1 3))
---
シンボルのリストをソート。

(vl-sort

'(a d c b a) 
'(lambda (s1 s2) 
(< (vl-symbol-name s1) (vl-symbol-name s2)) ) ) 

(A B C D) ; 結果のリストに A が 1 つしか残っていないことに注意 </syntaxhighlight>