2017-02-01 131 views
0

是否有可能直接返回一个地图内的响应并非这样做:返回地图

var authorized = false 
roles.map { role => 
    val method = userRole.getClass.getDeclaredMethod(role.toString) 
    authorized = method.invoke(userRole).asInstanceOf[Boolean] 
} 
authorized 

或者是它的唯一途径?我已经了解到最好避免使用var。

谢谢!

+0

的可能的复制[如何检查是否键或价值存在地图?](http://stackoverflow.com/questions/10567744/how-to-check-whether-key-or-value-exist-in-map) – Shastick

回答

6

如果你想检查是否存在在列表中满足一定条件的元素,你可以使用exists方法:

问题后
list.exists(value => condition(value)) 

编辑改为

你对于这种情况仍然可以使用exists,但如果要调用所有方法,则首先需要使用map(假设您的列表是渴望的):

roles.map { role => 
    userRole.getClass.getDeclaredMethod(role.toString).invoke(userRole) 
}.exists(_.asInstanceOf[Boolean]) 

如果您不需要调用的所有方法(这你也许并不需要,如果这些方法都是纯),你可以用exists

roles.exists { role => 
    userRole.getClass.getDeclaredMethod(role.toString) 
      .invoke(userRole).asInstanceOf[Boolean] 
} 
+0

这不幸是不存在检查,它是比这更复杂 – Guigui

+0

也许如果你可以在你的问题中详细说明答案可以更准确,否则这个答案很适合指定的问题。 – stefanobaghino

+0

我编辑了我正在使用的真实案例。 – Guigui