如何访问word匿名对象的对象属性
fun main(args: Array<String>) {
val sentence = "this is a nice sentence"
val wordLengths: List<Any> = sentence.split(' ').map {
object {
val length = it.length
val word = it
}
}
wordLengths.forEach { it:Any -> println(it) }
}
Run Code Online (Sandbox Code Playgroud)
您明确声明wordLengths为List<Any>, 并且Any没有wordorlength属性。您应该让 Kotlin 从 推断类型map。
fun main() {
val sentence = "This is a nice sentence"
val wordLengths = sentence.split(' ').map {
object {
val word = it
val length = it.length
}
}
wordLengths.forEach {
println("[${it.length}] ${it.word}")
}
}
Run Code Online (Sandbox Code Playgroud)
如果您计划在方法之外需要此对象,那么您应该创建必要的类或使用现有的类(例如Pair或其String本身)。请参阅对象表达式:
请注意,匿名对象只能在本地和私有声明中用作类型。如果您使用匿名对象作为公共函数的返回类型或公共属性的类型,则该函数或属性的实际类型将是匿名对象的声明的超类型,或者
Any如果您没有声明任何超类型。添加到匿名对象中的成员将不可访问。
| 归档时间: |
|
| 查看次数: |
2277 次 |
| 最近记录: |