Olá, espero que esteja tudo bem!
Gostaria de deixar uma sugestão, somente a critério de curiosidade ;)) Gostei bastante do conteúdo
De acordo com o conhecimento que eu tenho do tema, vi que foi utilizada a estratégia de criar uma variável nullable para receber o valor posteriormente da instância do jogo, nesse caso, poderia ter sido feito o retorno do valor do jogo ao final da execução do runCatching para evitar complexidade de tratamento de nulos.
fun main() {
val getGameRunCatching = runCatching{
println("Enter a game id")
val scanner = Scanner(System.`in`);
val gameId = scanner.nextLine();
val data = CheapSharkDataSource().getGame(gameId)
val game = Game(data.info.title, data.info.thumb)
return@runCatching game
}
getGameRunCatching.onSuccess {
game -> print(game)
}
getGameRunCatching.onFailure {
print("It was not possible to retrieve the game with the entered id.")
}
}