「Lambda」の版間の差分
編集の要約なし |
細編集の要約なし |
||
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
{{AutoLISP}} | |||
; 構文 | ; 構文 | ||
: (lambda ''arguments'' ''expr''...) | : (lambda ''arguments'' ''expr''...) | ||
6行目: | 7行目: | ||
: 匿名の関数を定義する。 | : 匿名の関数を定義する。 | ||
:lambda 関数は、新しい関数を定義するとそのオーバーヘッドが無視できない場合に使用する。また、使用する位置に関数を配置するので、プログラマの意図がより明確になる。リストに対して関数を実行する apply 関数や mapcar 関数と組み合わせて使用されることがよくある。 | :lambda 関数は、新しい関数を定義するとそのオーバーヘッドが無視できない場合に使用する。また、使用する位置に関数を配置するので、プログラマの意図がより明確になる。リストに対して関数を実行する apply 関数や mapcar 関数と組み合わせて使用されることがよくある。 | ||
; 引数 | ; 引数 | ||
:* arguments : 式に渡される引数。 | :* arguments : 式に渡される引数。 | ||
:* expr : LISP 式。 | :* expr : LISP 式。 | ||
; 戻り値 | ; 戻り値 | ||
17行目: | 20行目: | ||
; サンプル | ; サンプル | ||
<pre class="brush:autolisp;"> | <pre class="brush:autolisp;"> | ||
(apply '(lambda (a b c) | |||
(+ a (* b c))) | |||
'( 5 2 3)) | |||
11 | |||
(apply '(lambda (x y z) | |||
(* x (- y z)) | |||
) | |||
'(5 20 14) | |||
) | |||
30 | |||
(setq counter 0) | |||
(mapcar '(lambda (x) | |||
(setq counter (1+ counter)) | |||
(* x 5) | |||
) | |||
'(2 4 -6 10.2) | |||
) | |||
0 | |||
(10 20 -30 51.0) | |||
</pre> | </pre> | ||
----- | ----- | ||
関連事項 | 関連事項 | ||
* | * [[apply]] | ||
* [[mapcar]] | |||
[[Category:AutoLISP]] | [[Category:AutoLISP]] |
2015年9月15日 (火) 21:56時点における最新版
- 構文
- (lambda arguments expr...)
- 機能
- 匿名の関数を定義する。
- lambda 関数は、新しい関数を定義するとそのオーバーヘッドが無視できない場合に使用する。また、使用する位置に関数を配置するので、プログラマの意図がより明確になる。リストに対して関数を実行する apply 関数や mapcar 関数と組み合わせて使用されることがよくある。
- 引数
-
- arguments : 式に渡される引数。
- expr : LISP 式。
- 戻り値
- 最後の expr の値。
- サンプル
(apply '(lambda (a b c) (+ a (* b c))) '( 5 2 3)) 11 (apply '(lambda (x y z) (* x (- y z)) ) '(5 20 14) ) 30 (setq counter 0) (mapcar '(lambda (x) (setq counter (1+ counter)) (* x 5) ) '(2 4 -6 10.2) ) 0 (10 20 -30 51.0)
関連事項