Kotlin文档描述了如何在嵌套类中访问this expressions。
是否可以在嵌套的未命名函数中访问此表达式? e.g:
str = "abcde"
str.run {
this.substring(0..2).run {
println("${this} is a substring of ${???}")
}
答案 0 :(得分:2)
只是为了回答被问到的问题,对于可以提高可读性的情况,你可以use a label:
str.run outer@ { // Define a label
this.substring(0..2).run {
println("${this} is a substring of ${this@outer}") // Use the label
}
}
通常,您将使用隐式标签。例如,如果将外部调用更改为使用内部调用中的其他函数名称,则可以访问它:
with (str) {
this.substring(0..2).run {
println("${this} is a substring of ${this@with}") // Use the implicit label
}
}