ReactiveSwift:实用功能与自定义扩展功能完美融合

如果您像我一样热衷于功能性反应式编程和大量的ReactiveSwift / Cocoa用户,那么有时您会发现自己在创建自己的扩展。 不久之后,您就会遇到信号(或生成器)和绑定共享相同名称的情况。

实际上的方法是对绑定使用单数名称(如objectValues ,对信号和生成器使用复数(如objectValues 。 在处理集合(例如objectsValueobjectsValues ,errr等)时,这有点难看。当属性被命名或包含value时,会发生什么情况–我将让您自己想象。

但是,如果您需要同时创建信号和生成器以及绑定,该怎么办? 您想要保持一致,并且不想使用长句子的后缀,例如objectValuesSignalobjectValuesProducer ,这就是命名空间扩展可以帮助您的地方!

用于“绑定”,“ Signals` and `生产者”的多个命名可确保没有命名冲突。

绑定,信号和生产者扩展的创建方式与以前几乎相同,但没有后缀或复数-只是Base简单的变量名。

使对象绑定目标,信号和生产者分别在foo.reactive.bind,foo.reactive.signal和foo.reactive.producer扩展中可用。

最后,乐趣和收益部分: