2017-08-31 60 views
0

没有得到INT我有一个被定义为星火 - 从地图的价值阶

pLinkGroupsByP: Map[String, Set[(String, Int)]] 

我试图在对象得到诠释要返回一个对象,如果它存在,否则返回0因此.getOrElse(0)

val result:Int = 
    Try{ 
    pLinkGroupsByP(Doc.productType.id) 
     .contains(Doc.Group.id,container.containerDoc.GroupOrder) 
     (Doc.Group.id,container.containerDoc.GroupOrder)._2 
    }.getOrElse(0) 
  • (Doc.productType.id)是访问
  • (Doc.Group.id)是访问值值部分
  • (container.containerDoc.GroupOrder)是访问的值的第二部分是我需要的东西被分配到的结果。

但是,无论如何,我只能得到地图中第一个值的第一个数字。我只需要将该值中的数字分配回此try语句中的结果。

的样本数据是

Map["pro-ucw32, Set[(PRD-1292, 5)]] 
+0

因此,无论您的数据都是0,或者您有一个例外。 – Marcin

+0

@Marcin我过了零,现在我添加这个 '(Doc.Group.id,container.containerDoc.GroupOrder)._ 2' 它会让我回数字,但只有第一个数值。 即使它认为它应该是'5',它也只能让我回到'7',即使对于'3008'也是如此。请看一下样本数据图片 – dedpo

+0

@dedpo您能否请包括Doc的声明?谢谢 –

回答

0
val tupleToMap = pLinkGroupsByP(Doc.productType.id).toMap 
    tupleToMap(relatedDoc.lkGroup.id).GetorElse(0) 

元组映射转换值赋给一个元组映射,

relatedDoc.linkGroup.id is a key being mapped and retunred if its a number greater than 1 it will be returned and then a 0 
1

我想你可以得到的结果与简单的if else

val result:Int = if(pLinkGroupsByP(Doc.productType.id).contains(Doc.Group.id,container.containerDoc.GroupOrder)) container.containerDoc.GroupOrder else 0