variable new define array kotlin string-interpolation

define - new in kotlin



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

¿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" }

¿Devolverá este getter 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 a fullName , pero no he encontrado documentación sobre esta función, excepto cómo usarla.


Como saben, en la interpolación de cadenas, se evalúan los literales de cadena que contienen marcadores de posición, lo que da un resultado en el que los marcadores de posición se reemplazan con sus valores correspondientes. así que la interpolación (en KOTLIN) va de esta manera:

var age = 21 println("My Age Is: $age")

Recuerde: el signo "$" se utiliza para la interpolación.


Con respecto a su segunda pregunta: Si necesita fullName por fullName , puede y debe hacerlo explícitamente:

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

Este código es equivalente a su recorte, excepto que el getFullName() subyacente de getter ahora usa un campo privado final con el resultado de la concatenación.


El compilador de Kotlin traduce este código a:

new StringBuilder().append("Hello, ").append(name).append("!").toString()

No se realiza ningún almacenamiento en caché: cada vez que evalúa una expresión que contiene una plantilla de cadena, la cadena resultante se creará nuevamente.


Podrías hacer esto:

String.format("%s %s", client.firstName, client.lastName)