¿Cómo funciona la interpolación de cadenas en Kotlin?

¿El compilador de Kotlin traduce"Hello, $name!" usando algo como

java.lang.String.format("Hello, %s!", name)

o hay algún otro mecanismo?

Y si tengo una clase como esta, por ejemplo:

class Client {
  val firstName: String
  val lastName: String
  val fullName: String
    get() = "$firstName $lastName"
}

¿Este getter devolverá una cadena en caché o intentará construir una nueva cadena? ¿Debo usar delegado lazyOf en su lugar?

Sé que no habrá problemas de rendimiento a menos que haya millones de llamadas afullName, pero no he encontrado documentación sobre esta función, excepto cómo usarla.

Respuestas a la pregunta(4)

Su respuesta a la pregunta