2017-02-01 129 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