Что ж, вы уже используете некоторые функции более высокого порядка, но вы этого не замечаете, потому что вы верите, что они предназначены для циклов, но не являются циклами. Это просто сахарный синтаксис для вызовов на map
& flatMap
. Но в вашем случае, также к foreach
и тому плюс изменчивость, желание не делает его функциональным.
Я бы порекомендовал вам взглянуть на scalado c , вы обнаружите, что коллекции имеют много полезных методов. Например, в этом случае мы можем использовать count
& sum
.
val grantOrRevoke = userCurrentRole.iterator.map {
// Maybe it would be better to have a list of tuples instead of a list of lists.
case List(username, userRole) =>
entitlements.count { ent =>
(ent.userEmail.split("@", 2)(0) == username) && (ent.roleName == userRole)
}
}.sum