lambda 表达式:实用的匿名函数 ¶lambda 是匿名函数的符号,也就是没有名字的函数。每次使用匿名函数时,都需要把整个函数体写出来。
例如:
(lambda (arg) (/ arg 50))
这个函数会把传入的参数 arg 除以 50 并返回结果。
之前我们写过一个 multiply-by-seven 函数,用来把参数乘以 7。这个函数与之类似,只是把参数除以 50;而且它没有名字。与 multiply-by-seven 等价的匿名函数是:
(lambda (number) (* 7 number))
(See The defun Macro。)
如果我们想计算 3 乘以 7,可以写成:
(multiply-by-seven 3)
\_______________/ ^
| |
function argument
这个表达式会返回 21。
同样,我们也可以写成:
((lambda (number) (* 7 number)) 3)
\____________________________/ ^
| |
anonymous function argument
如果我们想把 100 除以 50,可以写成:
((lambda (arg) (/ arg 50)) 100)
\______________________/ \_/
| |
anonymous function argument
这个表达式返回 2。100 被传给函数,函数将其除以 50。
关于 lambda 的更多内容,参见 see Lambda Expressions in The GNU Emacs Lisp Reference Manual。Lisp 与 lambda 表达式均源自 λ 演算。