लिखने के बाद फ़्लैटन प्रकार वास्तविक जीवन विरासत विधियों के आकार अजीबता और प्रश्न के बिंदु को प्रदर्शित करने के लिए एक खिलौना उदाहरण है।दो defs
आप anotherFunc
देख सकते हैं, personList
से अधिक मानचित्रण के बाद \/[Throwable,List[\/[Throwable,String]]]
जो नहीं करना है लेकिन वापसी प्रकार map
ing personList
के प्रभाव के प्रकार फैलता है। फिर क्या anotherFunc
अंदर नीचे बताया गया है (वास्तव में वहाँ Option("fakeString")
या कि में से किसी के बजाय हो रहा और अधिक सार्थक बातें है डेमो प्रयोजन के लिए है।
आवश्यकता map
personList
करने के लिए है और अगर यह right
है तो लौट आए List[Person]
के प्रत्येक तत्व के साथ कुछ करना से right
(पक्ष है कि अलगाव से लौटे गया था)।
कैसे आसान बनाने/anotherFunc
की वापसी प्रकार समतल (\/[Throwable,List[String]]
वापस जाने के लिए) के लिए। अन्य combinators का उपयोग किया जा सकता है?
case class Person(name :String)
def personList : \/[Throwable,List[Person]] ={
\/.fromTryCatch{
List(Person("John"))
}
}
def anotherFunc : \/[Throwable,List[\/[Throwable,String]]]= {
personList.map{ pl =>
pl.map{p =>
for{
s <- Option("fakeString").\/>(new Throwable("not found"))
} yield s
}
}
}
मैं 'ट्रैवर्सयू' के बारे में भी सोच नहीं रहा था, अच्छा जवाब! – Noah
धन्यवाद, @ नोहा, और स्कूप के बारे में खेद है- अगर 'ट्रॉवर्स' मैं जो जोड़ रहा था, तो मैं इसे एक टिप्पणी करता। –