函数式编程与命令式编程最大的不同其实在于:
函数式编程关心数据的映射,命令式编程关心解决问题的步骤
这里的映射就是数学上「函数」的概念——一种东西和另一种东西之间的对应关系。
这也是为什么「函数式编程」叫做「函数」式编程。
这是什么意思呢?
假如,现在你来到 google 面试,面试官让你把二叉树镜像反转一下(大雾
几乎不假思索的,就可以写出这样的 Python 代码:
def
invertTree
(
root
):
if
root
is
None
:
return
None
root
.
left
,
root
.
right
=
invertTree
(
root
.
right
),
invertTree
(
root
.
left
)
return
root
好了,现在停下来看看这段代码究竟代表着什么——
它的含义是:首先判断节点是否为空;然后翻转左树;然后翻转右树;最后左右互换。
这就是命令式编程——你要做什么事情,你得把达到目的的步骤详细的描述出来,然后交给机器去运行。
这也正是命令