「Vl-every」の版間の差分
編集の要約なし |
編集の要約なし |
||
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
{{AutoLISP}} | |||
; 構文 | ; 構文 | ||
: (vl-every ''predicate-function'' ''list'' [''list'']...) | : (vl-every ''predicate-function'' ''list'' [''list'']...) | ||
; 機能 | ; 機能 | ||
: すべての要素の組み合わせに対してテスト結果が真かどうかをチェックする。 | : すべての要素の組み合わせに対してテスト結果が真かどうかをチェックする。 | ||
; 引数 | ; 引数 | ||
13行目: | 16行目: | ||
; | ; | ||
:* list : テストするリスト。 | :* list : テストするリスト。 | ||
; 戻り値 | ; 戻り値 | ||
: predicate-function が、すべての要素の組み合わせに対して nil 以外の値を返した場合は T。 | : predicate-function が、すべての要素の組み合わせに対して nil 以外の値を返した場合は T。 | ||
: それ以外の場合は nil。 | : それ以外の場合は nil。 | ||
; サンプル | ; サンプル | ||
: 現在のフォルダに空のファイルが存在するかどうかチェック。 | <pre class="brush:autolisp;"> | ||
; 現在のフォルダに空のファイルが存在するかどうかチェック。 | |||
(vl-every | |||
'(lambda (fnm) (> (vl-file-size fnm) 0)) | |||
(vl-directory-files nil nil 1) ) | |||
T | |||
; --- | |||
; NLST 内の数値のリストが '<= によって整列されているかどうかをチェック。 | |||
(setq nlst (list 0 2 pi pi 4)) | |||
(0 2 3.14159 3.14159 4) | |||
(vl-every '<= nlst (cdr nlst)) | |||
T | |||
; --- | |||
; 結果の比較。 | |||
(vl-every '= '(1 2) '(1 3)) | |||
nil | |||
(vl-every '= '(1 2) '(1 2 3)) | |||
T | |||
; * 上記の例で最初の式が nil を返すのは、vl-every 関数が各リストの第 2 要素を比較し、それらが数値的に等しくないから。 2 番目の式が T を返すのは、短い方のリスト(1 2)のすべての要素を処理した後、vl-every 関数は要素の比較を中止するが、その時点でリストが数値的に等しい。リストの終端に達すると、vl-every 関数は nil 以外の値を返す。 | |||
; --- | |||
; 次の例は、一方が整数を含み他方が nil であるリストを vl-every 関数が評価したときの結果を示している。 | |||
(setq alist (list 1 2 3 4)) | |||
(1 2 3 4) | |||
(setq junk nil) | |||
nil | |||
(vl-every '= junk alist) | |||
T | |||
; * 戻り値が T となるのは、vl-every 関数が nil リストに対して、リストの終端に達したのと同じように応答するから(たとえテストに要素がまったく割り当てられていなくても)。上記の場合も、リストの終端に達したことになり、vl-every 関数は nil 以外の値を返す。 | |||
</pre> | |||
----- | ----- |
2023年11月14日 (火) 07:23時点における最新版
- 構文
- (vl-every predicate-function list [list]...)
- 機能
- すべての要素の組み合わせに対してテスト結果が真かどうかをチェックする。
- 引数
-
- predicate-function : テスト関数。
- vl-every 関数に提供されるリストと同じ数の引数を受け入れ、ユーザが指定した任意の条件で T を返す任意の関数を指定できる。predicate-function 引数の値は、次の形式のいずれかが指定可能。
- シンボル(関数名)
- '(LAMBDA (A1 A2) ...)
- (FUNCTION (LAMBDA (A1 A2) ...))
-
- list : テストするリスト。
- 戻り値
- predicate-function が、すべての要素の組み合わせに対して nil 以外の値を返した場合は T。
- それ以外の場合は nil。
- サンプル
; 現在のフォルダに空のファイルが存在するかどうかチェック。 (vl-every '(lambda (fnm) (> (vl-file-size fnm) 0)) (vl-directory-files nil nil 1) ) T ; --- ; NLST 内の数値のリストが '<= によって整列されているかどうかをチェック。 (setq nlst (list 0 2 pi pi 4)) (0 2 3.14159 3.14159 4) (vl-every '<= nlst (cdr nlst)) T ; --- ; 結果の比較。 (vl-every '= '(1 2) '(1 3)) nil (vl-every '= '(1 2) '(1 2 3)) T ; * 上記の例で最初の式が nil を返すのは、vl-every 関数が各リストの第 2 要素を比較し、それらが数値的に等しくないから。 2 番目の式が T を返すのは、短い方のリスト(1 2)のすべての要素を処理した後、vl-every 関数は要素の比較を中止するが、その時点でリストが数値的に等しい。リストの終端に達すると、vl-every 関数は nil 以外の値を返す。 ; --- ; 次の例は、一方が整数を含み他方が nil であるリストを vl-every 関数が評価したときの結果を示している。 (setq alist (list 1 2 3 4)) (1 2 3 4) (setq junk nil) nil (vl-every '= junk alist) T ; * 戻り値が T となるのは、vl-every 関数が nil リストに対して、リストの終端に達したのと同じように応答するから(たとえテストに要素がまったく割り当てられていなくても)。上記の場合も、リストの終端に達したことになり、vl-every 関数は nil 以外の値を返す。
関連事項