-
- 函数指针仅仅是一个地址,不具备函数原型信息,没有类型限制,比如一个指向变量的指针同样可以指向一个函数,但是
block
作为函数对象,是有部分函数信息的,类型限制更明确。
- 函数指针仅仅是一个地址,不具备函数原型信息,没有类型限制,比如一个指向变量的指针同样可以指向一个函数,但是
-
block
方式便于实现真正的“函数式”
编程,让函数成为基本的运算元,往更远的方向说,真正的函数式语言可以去掉寄存器(请参考冯诺依曼机器基本架构),提高程序的执行效率,近段时间的语言都支持lambda
语法,包括JS
、C++
、Python
、Ruby
等,可见各个编程语言为改进冯诺依曼架构做出的努力和准备。
-
- 提高程序的健壮性, 定义函数的代码会位于程序的代码段,如果函数内部出现内存溢出,就会直接导致
crash
,因为代码段是不可写的;block
作为函数对象在运行时生成,位于栈内,即使出现内存溢出,一般也不会直接导致crash
。
- 提高程序的健壮性, 定义函数的代码会位于程序的代码段,如果函数内部出现内存溢出,就会直接导致