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 可用于CollectionArray 等,让您可以像在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 一样的“枚举”函数?的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript 有像 Kotlin 这样的扩展吗?

Spring restful API,是不是有像路由器一样使用的方法来获取其他方法端点或 URL?

是否有像dwrxr-x --- +一样在扩展ACL中处理其他用户权限的python模块?

就像java一样,c ++中有像timer和timertask这样的东西吗?

是否有像 UITabBarController 一样工作的 iOS 滑动菜单控制器?

是否有像 PHP 一样进行 Rijndael 256 位加密的 JavaScript 库?