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 validMap = mapOf(
"username" to "alex",
"email" to "alex@mail.ru",
"age" to "25"
)
val userFromValidMap = User.fromMap(validMap)
val invalidMap = mapOf(
"username" to "alex",
"age" to "25"
)
val userFromInvalidMap = User.fromMap(invalidMap)
println(guest)
println(userFromValidMap)
println(userFromInvalidMap)
}