Загрузка данных


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)
}