Skip to content

Commit fee0e7f

Browse files
committed
(っ˘▽˘)っ ☁️ ⊂(◕。◕⊂)
1 parent 8893ba7 commit fee0e7f

34 files changed

+191
-161
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Functional reactive programming introduction using ReactiveCocoa - By AshFurrow
1313
译者为:
1414
[kevinHM](https://github.com/KevinHM)
1515

16-
如果在阅读过程中发现有什么问题,请到[这里](https://github.com/KevinHM/FunctionalReactiveProgrammingOniOS)(本书在Github上的地址)开issue,我会尽快改正。
16+
如果在阅读过程中发现有什么问题,请到[这里(本书在Github上的地址)](https://github.com/KevinHM/FunctionalReactiveProgrammingOniOS)开issue,我会尽快改正。
1717

1818

1919
以下为本书的目录索引:

chapter2/conclusion.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
* 声明式编程把我们从关注业务的实现细节中解脱出来,用更多的时间关注业务本身。
77
* 函数式反应型编程是函数式与反应式编程的结晶。
88

9-
我是一个实用主义者。我们所有的开发者们都是在实践中完成自己的作品的。因此我想尽可能少的占用你的时间来讲述理念的东西,在下一章节,我们将深入探讨代码实现。
9+
我是一个实用主义者。我们所有的开发者们都是在实践中完成自己的作品的。因此我想尽可能少的占用你的时间来讲述理念的东西,在下一章节,我们将深入探讨代码实现。

chapter2/functional_reactive_programming.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# 函数式反应型编程
2+
23
  函数式反应型编程是两个声明式编程的子范例(函数式+反应式)的组合。这里我们先来理解反应式编程,因为它非常简单。
34

45
  反应式编程在表处理方面十分强悍。假设我们有一个表格A:她是用来纪录其他两个表格(表格B、表格C)的和。当表格B或C当中任意一个值发现变化时,这些变化都会通过表实时改变表格A的值。总之,我们定义好了A是B和C的和,不管发生了什么,A会一直响应B或C的变化,永远都是B与C的和。

chapter2/philosophy.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# 理念
2+
23
  这将是高屋建瓴的一章。 “为什么?!”你想,"尼玛!我以为这是一本关于编程的书,你特么跟我讲理念,我要拿回我的钱!"。稍安勿躁。。。这本书的受众是那些想要在编程中找到更好方式的开发者。那么我们现在首先要谈谈为什么我们想要更好的方式。
34

45
  对向来以‘懒惰’著称的程序员们来说,为什么我们要选择改进?唯一可以理解的是,提高我们的技能让我们可以更‘懒’。。。我们希望用更少的代码来完成更多的任务。函数式反应型编程可以帮助我们达成这些目标,但它同时也意味着我们必须跳出自己的舒适区去接受函数式编程的洗礼。

chapter3/Higher_Order_Functions.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# 高阶函数
2+
23
函数式编程的一个关键的概念是"高阶函数"。从维基百科的解释来看,一个高阶函数需要满足下面两个条件:
34
* 一个或者多个函数作为输入。
45
* 有且仅有一个函数输出。

chapter3/conclusion.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# 总结
2+
23
在过去的章节中,我们使用RXCollections后不需要额外的可变变量就可以在列表上进行操作,虽然RXCollections可能隐式地生成了这样的可变变量来完成任务,但是这不是我们要关心的,因为它已经为我们抽象出了这样的方式,通过:mapping\filtering和folding这种方式让我们不必在意实现任务的步骤。(当然,这并不是说,我们不应该熟悉RXCollections的源码,只是告诉你不必按部就班地去完成任务了)
34

45
  在最后的章节中,我们也看到了,使用链式操作一次可以输出一个更为复杂的逻辑操作的结果。下一章我们将谈论更多的有关链式操作的内容———实际上,它是ReactiveCocoa中的重要语法之一。

chapter3/filter.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# 高阶过滤
2+
23
谈到ReactiveCocoa,我们要使用的另一种关键的高阶函数就是过滤器。一个列表通过过滤能够返回一个只包含了原列表中符合条件的元素的新列表,具体我们来看实践中的例子:
4+
35
```
46
NSArray *filteredArray = [array rx_filterWithBlock:^BOOL(id each){
57
return ([each integerValue] % 2 == 0);

chapter3/fold.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# 高阶折叠
2+
23
Flod 是一个有趣的高阶函数-她把列表中的所有元素变成一个值。一个简单的高阶折叠能够用来给数值数组求和。
4+
35
```
46
NSNumber * sum = [array rx_foldWithBlock:^ id (id memo , id each){
57
return @([memo integerValue] + [each integerValue]);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# 用RXCollections进行函数式编程
2+
23
这是一本关于函数响应式编程的书,对吗?!
34

45
好吧,就像我们在学会跑步之前必须先学会走路一样,在高效地进行函数响应式编程之前,我们得学会怎么样进来函数式编程。

chapter3/installing_RXCollections.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# 使用RXCollections
2+
23
我的朋友RobRix使用OC写了一个优秀的高阶函数的库叫做[RXCollections](https://github.com/robrix/RXCollections) (译者注:目前这个项目作者已经停止维护,取而代之是RobRix的另外一个项目[Reducers](https://github.com/robrix/Reducers))
34

45
首先,我们需要一个可以展示的Xcode工程,创建一个新工程“Playground”。选择"Single View Application"作为模板。我们将在AppDelegate中展示绝大部分代码。在本书中,我将使用"FRP"作为类的前缀。

0 commit comments

Comments
 (0)