kotlin - 字符串插值在 Kotlin 中是如何工作的?

标签 kotlin string-interpolation

Kotlin 编译器是否翻译 "Hello, $name!" 使用类似的东西

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

还是有其他机制?

如果我有这样的类(class),例如:

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

这个 getter 会返回一个缓存的字符串还是会尝试构建一个新的字符串?我应该改用lazyOf 委托(delegate)吗?

我知道除非有数百万次对 fullName 的调用,否则不会出现性能问题,但除了如何使用它之外,我还没有找到有关此功能的文档。

最佳答案

Kotlin 编译器将此代码翻译为:

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

没有执行缓存:每次评估包含字符串模板的表达式时,将再次构建结果字符串。

关于kotlin - 字符串插值在 Kotlin 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442198/

相关文章:

kotlin - Anko 0.8 - Unresolved lparams 引用

kotlin - 等待使用协程绑定(bind)服务

android - Kotlin 在全局类中设置全局变量

c# - 我可以在 C# 6 中将多个语句放入一个内插字符串中吗?

PHP - 在字符串中打印命名空间常量?

安卓三色渐变

android - Kotlin - findViewById 导致应用程序在启动后立即关闭

c# - 静态字符串的链式插值无法按预期工作

swift - 来自字符串插值的警告

scala - 在 Scala 中实现 Scala 风格的字符串插值