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


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