How does string interpolation work in Kotlin?

前端 未结 4 1439
囚心锁ツ
囚心锁ツ 2020-12-25 10:17

Does the Kotlin compiler translate \"Hello, $name!\" using something like

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

or is

相关标签:
4条回答
  • 2020-12-25 10:56

    The Kotlin compiler translates this code to:

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

    There is no caching performed: every time you evaluate an expression containing a string template, the resulting string will be built again.

    0 讨论(0)
  • 2020-12-25 11:05

    As you know, in string interpolation, string literals containing placeholders are evaluated, yielding a result in which placeholders are replaced with their corresponding values. so interpolation (in KOTLIN) goes this way:

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

    Remember: "$" sign is used for interpolation.

    0 讨论(0)
  • 2020-12-25 11:09

    You could do this:

    String.format("%s %s", client.firstName, client.lastName)
    
    0 讨论(0)
  • 2020-12-25 11:13

    Regarding your 2nd question: If you need caching for fullName, you may and should do it explicitly:

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

    This code is equivalent to your snipped except that the underlying getter getFullName() now uses a final private field with the result of concatenation.

    0 讨论(0)
提交回复
热议问题