class User private constructor(
val username: String,
val email: String,
val age: Int
) {
companion object {
const val MIN_AGE = 0
const val MAX_AGE = 150
fun createGuest(): User {
return User(
"guest",
"guest@example.com",
0
)
}
fun fromMap(map: Map<String, String>): User? {
val username = map["username"] ?: return null
val email = map["email"] ?: return null
val age = map["age"]?.toIntOrNull() ?: return null
return User(username, email, age)
}
}
override fun toString(): String {
return "User(username=$username, email=$email, age=$age)"
}
}
fun main() {
val guest = User.createGuest()
val correctMap = mapOf(
"username" to "alex",
"email" to "alex@mail.ru",
"age" to "25"
)
val user = User.fromMap(correctMap)
val wrongMap = mapOf(
"username" to "ivan",
"age" to "20"
)
val wrongUser = User.fromMap(wrongMap)
println(guest)
println(user)
println(wrongUser)
}