तोड़ने के बिना ऑपरेटर को सब्जियों को सशर्त रूप से लागू करने के लिए कैसे करें। मेरे पास आरएक्सजेवा देखने योग्य पर ऑपरेटरों की एक श्रृंखला है। मैं "श्रृंखला को तोड़ने" के बिना बुलियन मूल्य के आधार पर दो ऑपरेटरों में से एक को लागू करने में सक्षम होना चाहता हूं।आरएक्सजेवा: शृंखला
मैं आरएक्स (जावा) के लिए अपेक्षाकृत नया हूं और मुझे लगता है कि एक अस्थायी चर शुरू करने के मेरे वर्तमान दृष्टिकोण से ऐसा करने का शायद एक और बेवकूफ और पठनीय तरीका है।
यहाँ एक ठोस उदाहरण है, एक नमूदार से आइटम बफरिंग एक बैच का आकार क्षेत्र में गैर-शून्य है अगर, अन्यथा toList()
साथ असीम आकार का केवल एक बैच उत्सर्जन:
Observable<Item> source = Observable.from(newItems);
Observable<List<Item>> batchedSource = batchSize == null ?
source.toList() :
source.buffer(batchSize);
return batchedSource.flatMap(...).map(...)
यह संभव तरह कुछ है? (छद्म lambdas क्योंकि जावा):
Observable.from(newItems)
.applyIf(batchSize == null,
{ o.toList() },
{ o.buffer(batchSize) })
.flatMap(...).map(...)
बिल्कुल सही! बहुत बहुत धन्यवाद। 'compose() 'वर्तमान में आधिकारिक ऑपरेटर दस्तावेज़ों में दिखाई नहीं दे रहा है लेकिन एक त्वरित खोज ने एक अच्छा ब्लॉग पोस्ट सामने आया जिसे शाब्दिक रूप से" चेन न करें "कहा जाता है: http://blog.danlew.net/2015/03/ 02/डॉन-ब्रेक-द-चेन/ – user1405990
क्या होगा यदि स्थिति आइटम के अंदर ही है? उदाहरण: wallpapers.map {it.bitmap! = null {डाउनलोड करें और सेट करें} {बस सेट करें}} – feresr
'flatMap' या 'concatMap' का उपयोग करें। – akarnokd