附加作用
Last updated
Was this helpful?
Last updated
Was this helpful?
如果一个函数除了计算返回值以外,还有其他可观测作用,我们就称这个函数拥有。
如果一个函数发起了网络请求,那他就是有的。这个是获取或写入了函数本体以外的全局状态(数据库存储的状态可看作是全局状态)。
如果一个函数获取了位置信息,那他就是有的。这个是获取了函数本体以外的位置信息(也可以看作是全局状态)。
如果一个函数获取了 UI 状态,那他就是有的。这个是读取函数本体以外的 UI 状态(也可以看作是全局状态)。
以上,网络请求,定位和UI是比较常见的。以下也是:
读写全局变量
读写本地数据库
读写文件
使用蓝牙模块
打印输出
...
...
...
...
...
...
... 经过 60 秒后
有并不是什么坏事情。事实上,正是因为有了他,App 才更有价值。我们以几个常见 App 为例:
饿了么是一个订餐 App,他最主要的 是更新程序本体以外的状态。即:饿 -> 饱 (将我们从很饿变为很饱)。
抖音是一个影音娱乐 App,他最主要的 是更新程序本体以外的状态。即:😐 -> 😁 (将我们变得更开心)。
滴滴是一个叫车 App,他最主要的 是更新程序本体以外的状态。即:🏠 -> 🏢(从起点到终点)。
在解释 中的 之前,我们先要理解一个概念,即: 其实是一个函数:
你没有看错!以上 subscribe
函数就是 。
换句话说 的 , 指的就是 subscribe
函数里面的 。
之前在介绍 时,举了这样一个例子:
这里的闭包 { (observer) -> Disposable in ... }
可以看作是 subscribe
函数,这个函数的就是发起网络请求去获取一个 JSON
。所以 let json: Observable<JSON>
的 也是发起网络请求去获取一个 JSON
。
现在我们应该能够理解,什么是 的 了。
首先澄清一下,我们这里所介绍的 , 就是大家平时说的 “”。
最近听音乐时,不经意间切到了这一首歌:(这首歌可能你也听过)。
于是我就很好奇,这个 “” 到底指的是 不好的作用,还是 🤔。从标题上看不出来,后来我看了下歌词:
我知道了,这里的 “” 应该是 不好的作用。虽然解释成 也说得通。但是 不好的作用 更符合语境。
那么这里就有个问题,“” 是一个。他既可以代表 不好的作用,也可以代表 。而且,在有些语境下这两种意义都说得通。我们便无法读出作者的本意。
在计算机领域也是一样的,虽然很多时候我们都知道 “” 指的是 ,但是用 不好的作用 也解释得通。这样就会产生歧义。
所以,我觉得如果有一个词,专门表示计算机领域的 “” 会更好。如:。如此一来,读者不需要做多余的判断,就能解读作者的意图。