当前位置: 首页 > 知识库问答 >
问题:

静态编程语言是否有像Python一样的“枚举”函数?

范轶
2023-03-14

用Python我可以写:

for i, element in enumerate(my_list):
    print i          # the index, starting from 0
    print element    # the list-element

如何用静态编程语言编写?

共有2个答案

阎宝
2023-03-14

标准库中有一个forEachIndexed函数:

myList.forEachIndexed { i, element ->
    println(i)
    println(element)
}

也请参见@s1m0nw1的答案,with Index也是迭代Iterable的一种非常好的方法。

安泰平
2023-03-14

如前所述,forEachIndexed是一种很好的迭代方式。

备选案文1

为Iterable类型定义的带索引的扩展函数可用于每个类型:

val ints = arrayListOf(1, 2, 3, 4, 5)

for ((i, e) in ints.withIndex()) {
    println("$i: $e")
}

备选案文2

扩展属性索引可用于集合、数组等,让您像在C、Java等中常见的循环中一样迭代:

for(i in ints.indices){
     println("$i: ${ints[i]}")
}
 类似资料:
  • 我正在尝试使用柯特林 V1.2.70、Gradle V4.10.1 和 Java 11。使用 gradle 编译项目时,出现错误,指出“未知的 JVM 目标版本:11。支持的版本:1.6,1.8“。 Kotlin 编译器是否支持 Java 11(生成与 Java 11 JVM 兼容的代码)?如果是这样,如何使用渐变配置?

  • 问题内容: Java中的静态和非静态枚举有什么区别?两种用法是相同的。 正确吗 所有静态的都在启动时加载到内存中,非静态的则按需加载 ? 如果是,那么哪种方法更好?将某些数据始终保留在内存中还是每次使用服务器资源加载它们? 问题答案: 所有的都是有效的。如果您有嵌套的枚举,则它与相同。 所有类都是延迟加载的(枚举或其他),但是在加载时,它们会一次全部加载。也就是说,您不能加载一些常量,而不能加载其

  • 我喜欢这种Swift语法;它对很多事情都很有帮助: 我很想在科特林做这件事。但是,我找不到合适的语法! 科特林有这样的事吗?

  • 我有一个注释要求是编译时常量。我从下面的中获取: 我的s如下: 当我使用注解Kotlin需要是编译时常量。 注释实现本身: 我仔细研究了类似的问题,但没有找到解决方法。我还找到了一篇与这个主题相关的文章,但到目前为止没有任何效果。 附带说明:我不能更改注释,因为它来自库,我也不能更改库。 总而言之,有没有办法从静态编程语言中的编译时常量到注释中使用?

  • 我有静态编程语言为空的问题,我想知道我是否能够解决它与合同 和 还有一个具有可为空数据的通用模型: 现在我创建了一个函数,它以接口作为参数。案例是仅当,因此如下所示: 那么现在,有没有任何选项可以使用Kotlin契约来确保编译器不使用null参数执行?

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?