「Vl-sort」の版間の差分
(ページの作成: ; 構文 : (vl-sort ''list'' ''comparison-function'') ; 機能 : 指定された比較関数にしたがってリスト内の要素をソートする。 ; 引数 :* list : …) |
編集の要約なし |
||
(同じ利用者による、間の7版が非表示) | |||
1行目: | 1行目: | ||
{{AutoLISP}} | |||
; 構文 | ; 構文 | ||
: (vl-sort ''list'' ''comparison-function'') | : (vl-sort ''list'' ''comparison-function'') | ||
5行目: | 6行目: | ||
; 機能 | ; 機能 | ||
: 指定された比較関数にしたがってリスト内の要素をソートする。 | : 指定された比較関数にしたがってリスト内の要素をソートする。 | ||
; 引数 | ; 引数 | ||
17行目: | 19行目: | ||
; 戻り値 | ; 戻り値 | ||
: comparison-function 引数で指定された順序で並べ替えた list の要素を含んだリスト。 重複した要素がリストから削除されることがある。 | : comparison-function 引数で指定された順序で並べ替えた list の要素を含んだリスト。 重複した要素がリストから削除されることがある。 | ||
; サンプル | ; サンプル | ||
: 数値のリストをソート。 | <pre class="brush:autolisp;"> | ||
; 数値のリストをソート。 | |||
(vl-sort '(3 2 1 3) '<) | |||
(1 2 3) ; 結果のリストに 3 が 1 つしか含まれていないことに注意。 | |||
; 文字をソート(文字コードによるので注意が必要) | |||
(vl-sort '("3" "2" "1" "3") '<) | |||
("1" "2" "3" "3") ; 結果のリストに "3" が 2つ含まれていることに注意。AutoCAD・BricsCAD では文字の重複は削除されない。 | |||
("1" "2" "3") ; IJCADでは重複削除されてしまう。 | |||
(vl-sort '("甲" "乙" "丙" "甲" "丁") '<) | |||
("丙" "乙" "甲" "甲") ; AutoCAD, BricsCAD。ユニコード順(標準) | |||
("乙" "甲" "丙") ; IJCAD では文字の重複が削除され。JISコード順 | |||
;--- | |||
; 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 つしか残っていないことに注意 | |||
</pre> | |||
----- | |||
関連 | |||
* [[Vl-sort-i]] | |||
[[Category:AutoLISP]] | [[Category:AutoLISP]] |
2023年5月10日 (水) 08:25時点における最新版
- 構文
- (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 の要素を含んだリスト。 重複した要素がリストから削除されることがある。
- サンプル
; 数値のリストをソート。 (vl-sort '(3 2 1 3) '<) (1 2 3) ; 結果のリストに 3 が 1 つしか含まれていないことに注意。 ; 文字をソート(文字コードによるので注意が必要) (vl-sort '("3" "2" "1" "3") '<) ("1" "2" "3" "3") ; 結果のリストに "3" が 2つ含まれていることに注意。AutoCAD・BricsCAD では文字の重複は削除されない。 ("1" "2" "3") ; IJCADでは重複削除されてしまう。 (vl-sort '("甲" "乙" "丙" "甲" "丁") '<) ("丙" "乙" "甲" "甲") ; AutoCAD, BricsCAD。ユニコード順(標準) ("乙" "甲" "丙") ; IJCAD では文字の重複が削除され。JISコード順 ;--- ; 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 つしか残っていないことに注意
関連