如何访问模板字符串中的地图?
How to access map in template string?
我想使用来自 gradle.properties
的值,这些值应该进入模板字符串。
先天真:
println("${project.properties[somekey]}")
无效:Unresolved reference: somekey
那么,需要报价吗?
println("${project.properties[\"somekey\"]}")
是完全错误的语法:Expecting an expression
第一个 .
我找不到任何示例如何执行此操作,但官方 documentation 说 expressions.
问题:是否可以访问字符串模板中的映射,如果可以,如何访问?
是且如下:
"${project.properties["someKey"]}"
假设地图具有以下签名:Map<String, Any?>
(或Map<Any...
)
备选方案:
"${project.properties.getValue("someKey")}"
"${project.properties.getOrElse("someKey") { "lazy-evaluation-default-value" }}"
"${project.properties.getOrDefault("someKey", "someFixedDefaultValue")}"
基本上,您放入 ${}
中的所有代码都只是普通的 Kotlin 代码...不需要进一步 quoting/escaping,除了美元符号 $
本身,例如如果您不希望它被名为 test
的变量替换,则使用 "$test"
;如果您使用原始字符串
,则使用 """${"$"}test"""
请注意,在这种 println
情况下,以下内容也足够了(这也适用于上面显示的所有替代方案。您可以完全省略外部引号和 ${}
):
println(project.properties["someKey"])
我想使用来自 gradle.properties
的值,这些值应该进入模板字符串。
先天真:
println("${project.properties[somekey]}")
无效:Unresolved reference: somekey
那么,需要报价吗?
println("${project.properties[\"somekey\"]}")
是完全错误的语法:Expecting an expression
第一个 .
我找不到任何示例如何执行此操作,但官方 documentation 说 expressions.
问题:是否可以访问字符串模板中的映射,如果可以,如何访问?
是且如下:
"${project.properties["someKey"]}"
假设地图具有以下签名:Map<String, Any?>
(或Map<Any...
)
备选方案:
"${project.properties.getValue("someKey")}"
"${project.properties.getOrElse("someKey") { "lazy-evaluation-default-value" }}"
"${project.properties.getOrDefault("someKey", "someFixedDefaultValue")}"
基本上,您放入 ${}
中的所有代码都只是普通的 Kotlin 代码...不需要进一步 quoting/escaping,除了美元符号 $
本身,例如如果您不希望它被名为 test
的变量替换,则使用 "$test"
;如果您使用原始字符串
"""${"$"}test"""
请注意,在这种 println
情况下,以下内容也足够了(这也适用于上面显示的所有替代方案。您可以完全省略外部引号和 ${}
):
println(project.properties["someKey"])