我是 Scala 新手,因为到目前为止我一直是 Java 开发人员。
我有一个登录功能,就像用户可以拥有多个密码一样:
def login(User user) : Boolean = {
String username = user.username
String password = user.password
(username, password) match {
case("Amit","AmitSecret1" | "AmitSecret2") => true
case("Rahul","Atemporary") => true
case("Tom","Howareyou") => true
case("Roger","Dummy") => true
...
... // lot of other cases
case("_","_") => false
}
}
是否有其他方法可以在不进行模式匹配的情况下验证登录检查,并且不涉及每个组合的case?
寻找积极的回应。
你可以有一个
Map[Username, Set[Password]]
然后你可以这样做:
def login(user: User): UserStatus = {
map.get(key = user.username).fold(ifEmpty = UserDoesNotExist) { passwords =>
if (passwords.contains(user.password))
AuthenticatedUser
else
BadPassword
}
我刚刚编造了整个
UserStatus
ADT,但我希望意图很明确。