O operador Elvis tem esse nome porque é um Smiley famoso representando aquele cantor.
Mas ele é também um economizador de código fabuloso.
O código a seguir, de 2 linhas, pode ser substituído por uma linha só, usando o Elvis:
Código Original:
val telefone = promptStringAllowEmpty(“Telefone atual ‘${l.telefone}’ – novo: “)
if (telefone != null && telefone.isNotEmpty()) l.telefone = telefone
if (telefone == null) l.telefone = “+5521987530729”
Novo código:
l.telefone = telefone?.ifEmpty { l.telefone } ?: “+5521987530729”

Quero alterar a linha abaixo de maneira bem suscinta para que o isbn só apareça se não for nul, ou “0”. Posso usar o operador Elvis ?
println(“[${“%3d”.format(l.id)}] ${l.autor}: ‘${l.titulo}’. ${l.ano}. Isbn: ${l.isbn}. Valor: R$ ${“%.2f”.format(l.valor)}.”)
O ChatGpt me deu, dentre várias, uma opção ultra compacta e perfeitamente funcional:
println(“[${“%3d”.format(l.id)}] ${l.autor}: ‘${l.titulo}’. ${l.ano}.” +
(l.isbn?.takeIf { it != “0” }?.let { ” Isbn: $it.” } ?: “”) +
” Valor: R$ ${“%.2f”.format(l.valor)}.”)