「Cdr」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
 
編集の要約なし
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
{{AutoLISP}}
; 構文
; 構文
: (cdr ''list'')  
: (cdr ''list'')  


; 機能
; 機能
: 指定されたリストの先頭の要素以外のすべての要素を含むリストを返す。  
: 指定されたリストの先頭の要素以外のすべての要素を含むリストを返す。  
: CDR = Construct’s DORSAL Reference の略らしい。


; 引数
; 引数
:*  list : リスト
:*  list : リスト


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


; サンプル
; サンプル
: (cdr '(a b c))
: (B C)
: ---
: (cdr '((a b) c))
: (C)
: ---
: (cdr '())
: nil
: ---
: (cdr '(a . b))
: B
: ---
: (cdr '(1 . "Text"))
: "Text"
: ---
: (setq a '("one" "two" "three" "four")
: ("one" "two" "three" "four") 
: (setq b (cdr a))
: ("TWO" "THREE" "FOUR") 


<pre class="brush:autolisp;">
(cdr '(a b c))
(B C)
; ---
(cdr '((a b) c))
(C)
; ---
(cdr '())
nil
; ---
(cdr '(a . b))
B
; ---
(cdr '(1 . "Text"))
"Text"
; ---
(setq a '("one" "two" "three" "four")
("one" "two" "three" "four") 
(setq b (cdr a))
("TWO" "THREE" "FOUR") 
</pre>


----
----
48行目: 59行目:
  caar    cadr    cdar    cddr
  caar    cadr    cdar    cddr


: これらの連結は、car と cdr の呼び出しをネストしたものと同じ。
; これらの連結は、car と cdr の呼び出しをネストしたものと同じ。
: 各 a は car の呼び出しを表し、各 d は cdr の呼び出しを表す。
; 各 a は car の呼び出しを表し、各 d は cdr の呼び出しを表す。
: 例:  
;
:*  (caar x)  は  (car (car x))      と同じ
例: (setq x '((x1 y1 z1) (x2 y2 z2) (x3 y3 z3) (x4 y4 z4) (x5 y5 z5) (x6 y6 z6))) に対して
:*  (cdar x)  は  (cdr (car x))      と同じ
:*  (caar x)  は  (car (car x))      と同じ = x1
:*  (cadar x) は  (car (cdr (car x))) と同じ
:*  (cadar x) は  (car (cdr (car x))) と同じ = y1
:*  (cadr x)  は  (car (cdr x))      と同じ
:*  (caddar x) は  (car (cdr (car x))) と同じ = z1
:*  (cddr x) は  (cdr (cdr x))       と同じ
:*  (cdar x)  は  (cdr (car x))      と同じ = (y1 z1)
:*  (caddr x) は  (car (cdr (cdr x))) と同じ
:*  (cddr x) は  (cdr (cdr x))      と同じ = ((x3 y3 z3) (x4 y4 z4) (x5 y5 z5) (x6 y6 z6))
:*  (cadr x)  は  (car (cdr x))      と同じ = (x2 y2 z2)
:*  (caddr x) は  (car (cdr (cdr x))) と同じ = (x3 y3 z3)
:*  (cadddr x) は  (car (cdr (cdr (cdr x)))) と同じ = (x4 y4 z4)
:*  (caddddr x) は  (car (cdr (cdr (cdr (cdr x))))) と同じ = エラー(ネストが5レベルになるので)
 
-----
関連事項
*[[car]]


[[Category:AutoLISP]]
[[Category:AutoLISP]]

2025年3月31日 (月) 08:34時点における最新版

構文
(cdr list)


機能
指定されたリストの先頭の要素以外のすべての要素を含むリストを返す。
CDR = Construct’s DORSAL Reference の略らしい。


引数
  • list : リスト


戻り値
list の先頭の要素以外のすべての要素を含むリスト(ただし、下の注を参照)。
リストが空の場合、cdr 関数は nil を返す。
  • 注:list 引数がドット ペアの場合、リスト内に含めずに第 2 要素を返す。
サンプル
(cdr '(a b c)) 
(B C)
; ---

 (cdr '((a b) c)) 
 (C)

; ---
 (cdr '()) 
 nil

; ---
 (cdr '(a . b)) 
 B

; ---
 (cdr '(1 . "Text")) 
 "Text"
; ---
 (setq a '("one" "two" "three" "four")
 ("one" "two" "three" "four")  
 (setq b (cdr a))
 ("TWO" "THREE" "FOUR")  

MEMO
AutoLISP は、car と cdr の連結を 4 レベルの深さまでサポートする。
つまり、次の関数が有効。
caaaar  cadaar  cdaaar  cddaar
caaadr  cadadr  cdaadr  cddadr
caaar   cadar   cdaar   cddar
caadar  caddar  cdadar  cdddar
caaddr  cadddr  cdaddr  cddddr
caadr   caddr   cdadr   cdddr
caar    cadr    cdar    cddr
これらの連結は、car と cdr の呼び出しをネストしたものと同じ。
各 a は car の呼び出しを表し、各 d は cdr の呼び出しを表す。
例: (setq x '((x1 y1 z1) (x2 y2 z2) (x3 y3 z3) (x4 y4 z4) (x5 y5 z5) (x6 y6 z6))) に対して
  • (caar x) は (car (car x)) と同じ = x1
  • (cadar x) は (car (cdr (car x))) と同じ = y1
  • (caddar x) は (car (cdr (car x))) と同じ = z1
  • (cdar x) は (cdr (car x)) と同じ = (y1 z1)
  • (cddr x) は (cdr (cdr x)) と同じ = ((x3 y3 z3) (x4 y4 z4) (x5 y5 z5) (x6 y6 z6))
  • (cadr x) は (car (cdr x)) と同じ = (x2 y2 z2)
  • (caddr x) は (car (cdr (cdr x))) と同じ = (x3 y3 z3)
  • (cadddr x) は (car (cdr (cdr (cdr x)))) と同じ = (x4 y4 z4)
  • (caddddr x) は (car (cdr (cdr (cdr (cdr x))))) と同じ = エラー(ネストが5レベルになるので)

関連事項