「Vl-every」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
1行目: 1行目:
; 構文
; 構文
: (vl-every ''predicate-function'' ''list'' [''list'']...)  
: (vl-every ''predicate-function'' ''list'' [''list'']...)  


; 機能
; 機能
: すべての要素の組み合わせに対してテスト結果が真かどうかをチェックする。
: すべての要素の組み合わせに対してテスト結果が真かどうかをチェックする。


; 引数
; 引数
13行目: 15行目:
;
;
:* list : テストするリスト。
:* list : テストするリスト。


; 戻り値
; 戻り値
20行目: 23行目:


; サンプル
; サンプル
: 現在のフォルダに空のファイルが存在するかどうかチェック。
<pre class="brush:autolisp;">
::  (vl-every  
; 現在のフォルダに空のファイルが存在するかどうかチェック。
:: '(lambda (fnm) (> (vl-file-size fnm) 0))  
  (vl-every  
::  (vl-directory-files nil nil 1) )  
'(lambda (fnm) (> (vl-file-size fnm) 0))  
::  '''T'''
  (vl-directory-files nil nil 1) )  
: ---
  T  
: NLST 内の数値のリストが '<= によって整列されているかどうかをチェック。
; ---
:: (setq nlst (list 0 2 pi pi 4))  
; NLST 内の数値のリストが '<= によって整列されているかどうかをチェック。
:: (0 2 3.14159 3.14159 4)  
  (setq nlst (list 0 2 pi pi 4))  
:: (vl-every '<= nlst (cdr nlst))  
  (0 2 3.14159 3.14159 4)  
:: '''T'''
  (vl-every '<= nlst (cdr nlst))  
: ---
  T  
: 結果の比較。
; ---
:: (vl-every '= '(1 2) '(1 3))  
; 結果の比較。
:: '''nil'''
  (vl-every '= '(1 2) '(1 3))  
:: (vl-every '= '(1 2) '(1 2 3))  
  nil  
:: '''T'''
  (vl-every '= '(1 2) '(1 2 3))  
::* 上記の例で最初の式が nil を返すのは、vl-every 関数が各リストの第 2 要素を比較し、それらが数値的に等しくないから。 2 番目の式が T を返すのは、短い方のリスト(1 2)のすべての要素を処理した後、vl-every 関数は要素の比較を中止するが、その時点でリストが数値的に等しい。リストの終端に達すると、vl-every 関数は nil 以外の値を返す。
  T  
: ---
; * 上記の例で最初の式が nil を返すのは、vl-every 関数が各リストの第 2 要素を比較し、それらが数値的に等しくないから。 2 番目の式が T を返すのは、短い方のリスト(1 2)のすべての要素を処理した後、vl-every 関数は要素の比較を中止するが、その時点でリストが数値的に等しい。リストの終端に達すると、vl-every 関数は nil 以外の値を返す。
: 次の例は、一方が整数を含み他方が nil であるリストを vl-every 関数が評価したときの結果を示している。
; ---
:: (setq alist (list 1 2 3 4))  
; 次の例は、一方が整数を含み他方が nil であるリストを vl-every 関数が評価したときの結果を示している。
:: (1 2 3 4)  
  (setq alist (list 1 2 3 4))  
:: (setq junk nil)  
  (1 2 3 4)  
:: nil  
  (setq junk nil)  
:: (vl-every '= junk alist)  
  nil  
:: '''T'''
  (vl-every '= junk alist)  
::* 戻り値が T となるのは、vl-every 関数が nil リストに対して、リストの終端に達したのと同じように応答するから(たとえテストに要素がまったく割り当てられていなくても)。上記の場合も、リストの終端に達したことになり、vl-every 関数は nil 以外の値を返す。
  T
 
; * 戻り値が T となるのは、vl-every 関数が nil リストに対して、リストの終端に達したのと同じように応答するから(たとえテストに要素がまったく割り当てられていなくても)。上記の場合も、リストの終端に達したことになり、vl-every 関数は nil 以外の値を返す。
</pre>


-----
-----

2020年8月25日 (火) 14:49時点における版

構文
(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 以外の値を返す。

関連事項