如何解决有没有纯粹的功能来订阅Observable?
我是Java的老手,但是近年来,我一直在尝试采用一种更加纯粹的函数式编程风格。我发现RxJava是函数式编程思想的很好的补充,如今,我的大多数代码本质上都可以描述为函数式的。 唯一与我坐得不对的方法是,通过/通过可观察的方法订阅/取消订阅可观察到的
的副作用的方式void subscribe(Observer<? super T> observer)
或
Disposable subscribe(Consumer<? super T> onNext)
在我看来,签名中的void
返回类型已经是一个死胡同,我们正在这里处理一些无法正常工作(或至少不是纯粹的)的事情:自subscribe
方法不返回值,它只会产生副作用(反过来,这意味着存在可变状态)。 Consumer
和Observer
中的方法也都是void
方法,dispose()
中的Disposable
方法也是如此。因此,很明显,所有这些方法都依赖于副作用。
在实际编码中,我通过保留大部分代码(即一系列map
/ flatMap
/ filter
/ ...操作)保持纯净,从而避免了这个问题,同时提取了订阅逻辑到代码的特殊“边缘”区域,在该区域中我会处理一些副作用,例如将消息打印到控制台或发送HTTP响应。
当然,Java并不是纯函数式编程语言,因此实现这些副作用没有真正的问题。但是,我想知道,如果有人被一种纯粹的功能语言所限制,那么人们将如何订阅一种可观察的语言或实现一种onNext()
?是否有处理订阅的纯粹功能方法?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。