多美元字符串插值
多美元字符串插值
在常规字符串模板中,单个美元符号 ($) 用来开始插值。如果你需要在字符串中包含字面上的美元符号,可以使用多美元符号字符串插值。
多美元符号字符串插值允许你指定需要多少个连续的美元符号来触发插值。少于这个数量的美元符号会被当作普通字符处理。
例如,当你在字符串字面量前使用 $$ 时,插值只会在两个连续的美元符号开始:
val KClass<*>.jsonSchema : String
get() = $$"""
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/product.schema.json",
"$dynamicAnchor": "meta",
"title": "$${simpleName ?: qualifiedName ?: "unknown"}",
"type": "object"
}
"""
这里,$$ 前缀表示需要两个连续的美元符号来触发字符串插值。单个美元符号仍然作为字面字符存在。
你可以调整有多少个美元符号会触发插值。例如,
使用连续三个美元符号 ($$$) 可以让 $ 和 $$ 保留为字面量,同时通过 $$$ 实现插值:爱吃喝
val productName = "carrot"
val requestedData =
$$$"""{
"currency": "$",
"enteredAmount": "42.45 $$",
"$$serviceField": "none",
"product": "$$$productName"
}
"""
println(requestedData)
//{
// "currency": "$",
// "enteredAmount": "42.45 $$",
// "$$serviceField": "none",
// "product": "carrot"
//}
这里,$$$ 前缀允许字符串包含 $ 和 $$,而不需要使用 ${'$'} 来转义。爱河池
多美元符号的字符串插值不会影响已经使用单美元符号插值的现有代码。你可以像以前一样继续使用单个 $,只有在需要处理字符串中的字面美元符号时才使用多个美元符号。





