摘要: 惰性求值的本质是计算保存、计算构建和计算触发机制实现。 MASConstraint的实现是其典型案例。(本结论为错)。 [self.userIcon mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(15) 阅读全文
posted @ 2018-03-27 19:34 zzfx 阅读(796) 评论(0) 推荐(0) 编辑
摘要: 命令式关注实现细节; 声明式关注组成逻辑。 命令式编程强调执行上的顺序; 声明式编程强调逻辑上的行为和顺序。 阅读全文
posted @ 2018-03-27 19:18 zzfx 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 定义映射(计算),执行映射(计算) 对于函数式编程来说,其只关心,定义输入数据和输出数据相关的关系,数学表达式里面其实是在做一种映射(mapping),输入的数据和输出的数据关系是什么样的,是用函数来定义的。 函数式编程思想:先构造计算树,然后执行计算树。 函数式编程的开发过程是编写计算实现、调用约 阅读全文
posted @ 2018-03-27 18:59 zzfx 阅读(250) 评论(0) 推荐(0) 编辑
摘要: flattenMap使用步骤: 1.传入一个block,block类型是返回值RACStream,参数value 2.参数value就是源信号的内容,拿到源信号的内容做处理 3.包装成RACReturnSignal信号,返回出去。 flattenMap底层实现: 0.flattenMap内部调用bi 阅读全文
posted @ 2018-03-27 16:04 zzfx 阅读(1014) 评论(0) 推荐(0) 编辑
摘要: A monad is created by defining a type constructor M and two operations, bind and return (where return is often also called unit): The unary return ope 阅读全文
posted @ 2018-03-27 12:53 zzfx 阅读(154) 评论(0) 推荐(0) 编辑
摘要: Functor的代码表示 接下来我们用Scala实现Monad的定义: 还有一种更为常见的定义方式,在Scala中Monad也是以这种方式出现: 要满足这两点,我们需要一个类型构造器 我们现在可以把这个定义再简化一些,类型的映射方法可以不用,并把它作为一个type class: 阅读全文
posted @ 2018-03-27 11:08 zzfx 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。 In computer programming, a function object[a] is a construct allowing an 阅读全文
posted @ 2018-03-27 10:54 zzfx 阅读(219) 评论(0) 推荐(0) 编辑