Tenho duvida em como se lê essa linha de código, por causa do operador "?" entre as duas chaves do map(["imageLinks"]?["thumbnail"])
thumbnailLink = map["volumeInfo"]["imageLinks"]?["thumbnail"] ?? "https://placehold.co/200x290";
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Tenho duvida em como se lê essa linha de código, por causa do operador "?" entre as duas chaves do map(["imageLinks"]?["thumbnail"])
thumbnailLink = map["volumeInfo"]["imageLinks"]?["thumbnail"] ?? "https://placehold.co/200x290";
Olá, Rafael!
A função do operador "?" entre as duas chaves do map é verificar se o valor do primeiro índice é nulo antes de acessar o segundo índice. Isso é conhecido como operador de acesso condicional ou operador de navegação segura.
No seu exemplo, a linha de código thumbnailLink = map["volumeInfo"]["imageLinks"]?["thumbnail"] ?? "https://placehold.co/200x290"; está verificando se o valor de map["volumeInfo"]["imageLinks"] é nulo antes de acessar o valor de ["thumbnail"]. Se o valor de map["volumeInfo"]["imageLinks"] for nulo, o operador de navegação segura retornará nulo e, em seguida, o operador ?? irá atribuir o valor "https://placehold.co/200x290" à variável thumbnailLink.
Isso é útil para evitar erros de NullPointerException quando você está acessando propriedades aninhadas em um objeto e algumas delas podem ser nulas.
Espero ter ajudado! Bons estudos!
Ótima explicação Renan. Obrigado!