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)