#
在我所知道的语言中,都提供了函数,但在不同语言中函数的含义也有所区别。并且一般都只提供一种含义。在erlang中函数是确定的,一旦输入确定了其对应的输出也是唯一确定的。而在C等过程式、面向对象的编程语言中,函数是代表一个过程,是若干语句的集合。那么为何不干脆把他们分开,分别实现呢?
- 函数(function)
函数的输入值一旦确定了,其输出值也就确定了,不在乎过程,只关心输入与输出。因此函数具有不可变性。得益于不可变性,函数可以利用缓存技术加快处理速度。一个函数的作用域应当只存在于函数内部,函数不可对函数的外部发生修改(不能调用任务或是方法,也不能使用可变的外部变量)。因此函数的优势在于用于产生数据。
不可变
缓存
无副作用
- 任务(task)
任务定义了一系列语句的调用顺序。任务包含条件、执行体。条件就是完成任务所需的一个或多个输入数据。执行体就是任务的功能实现。任务是异步的,只关心任务的输入,而不在乎什么时候执行。任务之间是顺序无关,只要任务的条件满足,任务就会执行。在多线程编程中应该会有大作用。 - 方法(method)
这个比较传统了。方法不在乎输入或者输出,方法关心的是语句执行的过程。方法确保每条语句的正确执行。