2016-06-01 39 views
1

我应该使用哪种RxJava操作来将此混乱重写为更简单的版本?用rxjava简化多个if'

.map(content -> { 
        if (content.getPost() != null) { 
         return content.getPost(); 
        } else if (content.getAction() != null) { 
         return content.getAction().getPost(); 
        } else { 
         return null; 
        } 
       }) 

喜欢的东西

.map(Content::getPost) 
.map(Content::getAction::getPost) 
.combine(..) 

这可能吗?

+2

不能简化与RxJava;它看起来很好,因为顺便说一句。 – akarnokd

+0

谢谢!虽然,总有办法完美线条(: – aleien

回答

1

差不多就是akarnokd说,除了可以使用或许滤除无效后排放

.filter(content -> (content.getPost() != null) || ((content.getAction() != null) && (content.getAction().getPost()))) 
.map(content -> (content.getPost() != null ? content.getPost() : content.getAction().getPost())) 
+0

不错!谢谢! – aleien