返回地图

时间:2017-02-01 09:45:33

标签: scala

除了这样做之外,是否可以直接在地图内返回响应:

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

还是唯一的方法?我已经了解到最好避免使用var。

谢谢!

1 个答案:

答案 0 :(得分: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]
}