【发布时间】:2015-07-21 14:13:42
【问题描述】:
def leadParser(optionTuples: Option[(Option[(Option[(Option[(Option[(
Option[Iterable[EmailLead]],
Option[Iterable[QuestionLead]])],
Option[Iterable[LocalMarketQuestionLead]])],
Option[Iterable[OfferLead]])],
Option[Iterable[Bid]])],
Option[Iterable[CreditApplicationLeadWithEbayId]])]) = {
optionTuples match{
case None => (None, None, None, None, None, None)
case Some(c) =>
val creditApplictaionIteratorOption = c._2
c._1 match {
case None => (None, None, None, None, None, creditApplictaionIteratorOption)
case Some(b) =>
val bidIteratorOption = b._2
b._1 match {
case None => (None, None, None, None, bidIteratorOption, creditApplictaionIteratorOption)
case Some(o) =>
val offerIteratorOption = o._2
o._1 match {
case None => (None, None, None, offerIteratorOption, bidIteratorOption, creditApplictaionIteratorOption)
case Some(l) =>
val localMarketQuestionIteratorOption = l._2
l._1 match {
case None => (None, None, localMarketQuestionIteratorOption, offerIteratorOption, bidIteratorOption, creditApplictaionIteratorOption)
case Some(q) =>
val questionIteratorOption = q._2
val emailIteratorOption = q._1
(emailIteratorOption, questionIteratorOption, localMarketQuestionIteratorOption, offerIteratorOption, bidIteratorOption, creditApplictaionIteratorOption)
}
}
}
}
}
}
我知道输入 Option[... 看起来很疯狂,但这是我从 Spark 操作中收到的,所以我必须处理它。有没有更好的方法从这个复杂的元组/选项结构中获取所有迭代器选项?
【问题讨论】:
-
我正在考虑一个更容易阅读的递归函数。你试过写递归函数了吗?
-
每次迭代输入类型都会改变。我想过使用带有函数的flatMap,但它不起作用。 @B.Kemmer 在该函数中,我实际上尝试将 inputType 定义为 Option[(Option[Iterator], Option[_])] 但它不起作用。
标签: scala pattern-matching tuples scala-option