首页 > 解决方案 > 如何访问模板字符串中的地图?

问题描述

我想使用gradle.properties应该进入模板字符串的值。

先天真:

println("${project.properties[somekey]}")

不起作用:Unresolved reference: somekey

那么,需要报价吗?

println("${project.properties[\"somekey\"]}")

完全破坏了语法:Expecting an expression对于第一个 .

我找不到任何示例如何执行此操作,但官方文档中说expression

问题:是否可以访问字符串模板中的地图,如果可以,如何访问?

标签: dictionarykotlinstring-interpolation

解决方案


是的,如下:

"${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 代码...不需要进一步的引用/转义,除了美元符号$本身,例如,"\$test"如果您不希望它被一个名为的变量替换,test或者"""${"$"}test"""如果您使用原始字符串

请注意,在这种println情况下,以下内容也足够了(这也适用于上面显示的所有替代方案。您可以完全省略外部引号${}):

println(project.properties["someKey"])

另请参阅基本类型 - 字符串模板


推荐阅读