目录
Thunk
在编程语言刚起步的时候,有不同的求值策略,即函数的参数该在什么时候求值。其中一种叫 传值调用(call by value), 顾名思义就是在函数被调用前其参数的值就已经被编译器给算好了,每次调用函数都会用同样的参数值。另一种策略叫 传名调用(call by name),也就是只有当函数真正被调用的时候才去计算参数的值(惰性求值),在此过程中编译器其实已经把惰性求值的过程包装成了一个名叫 Thunk 辅助函数,函数被调用时,先调这个辅助函数求出参数值,再进入函数主体。这也许是最早 Thunk 这个概念被使用的时候了。
大致我们可以定义 Thunk 的具体含义如下:
Thunk 是一类函数的别名,主要特征是对另外一个函数添加了一些额外的操作,类似装饰器。其主要用途为延迟函数执行(惰性求值)或者给一个函数执行前后添加一些额外的操作。
纯虚函数
纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。 纯虚函数也可以叫抽象函数,一般来说它只有函数名、参数和返回值类型,不需要函数体。这意味着它没有函数的实现,需要让派生类去实现。 C++中的纯虚函数,一般在函数签名后使用=0作为此类函数的标志。Java、C#等语言中,则直接使用abstract作为关键字修饰这个函数签名,表示这是抽象函数(纯虚函数)。
函数式API
functional API
内联函数
在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(上下文),从而节省了每次调用函数带来的额外时间开支。但在选择使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支。另外还需要特别注意的是对递归函数的内联扩展可能引起部分编译器的无穷编译。
函数签名
函数签名(或者类型签名或方法签名)定义了函数或方法的输入与输出
签名可包含: 参数及参数的类型、返回值及其类型、可能抛出或传出的异常、该方法在面向对象程序中可用性方面的信息(如public、static或prototype)