Kotlin 是不是有像 Python 一样的“枚举”函数?
Posted
技术标签:
【中文标题】Kotlin 是不是有像 Python 一样的“枚举”函数?【英文标题】:Does Kotlin have an "enumerate" function like Python?Kotlin 是否有像 Python 一样的“枚举”函数? 【发布时间】:2018-03-31 05:58:42 【问题描述】:我可以在 Python 中编写:
for i, element in enumerate(my_list):
print i # the index, starting from 0
print element # the list-element
如何在 Kotlin 中编写此代码?
【问题讨论】:
【参考方案1】:Kotlin 中的迭代:一些替代方案
就像already 所说,forEachIndexed
是一种很好的迭代方式。
备选方案 1
为Iterable
类型定义的扩展函数withIndex
,可以在for
-each中使用:
val ints = arrayListOf(1, 2, 3, 4, 5)
for ((i, e) in ints.withIndex())
println("$i: $e")
备选方案 2
扩展属性indices
可用于Collection
、Array
等,让您可以像在C、Java 等已知的常见for
循环中一样进行迭代:
for(i in ints.indices)
println("$i: $ints[i]")
【讨论】:
两者的表现有什么要强调的吗?【参考方案2】:标准库中有一个forEachIndexed
函数:
myList.forEachIndexed i, element ->
println(i)
println(element)
参见@s1m0nw1's answer,withIndex
也是一种非常好的迭代Iterable
的方法。
【讨论】:
以上是关于Kotlin 是不是有像 Python 一样的“枚举”函数?的主要内容,如果未能解决你的问题,请参考以下文章
Spring restful API,是不是有像路由器一样使用的方法来获取其他方法端点或 URL?
是否有像dwrxr-x --- +一样在扩展ACL中处理其他用户权限的python模块?
就像java一样,c ++中有像timer和timertask这样的东西吗?