Kotlin 重复功能的目的
使用kotlin,我可以通过至少两种方式重复操作:Kotlin 重复功能的目的,kotlin,Kotlin,使用kotlin,我可以通过至少两种方式重复操作: val times = 5 // First option for (i in 0 until times) { print("Action $i") } // Second option repeat(times) { print("Action $it") } 我想知道这个计划的目的 如果可能,是否应将传统的for循环替换为repeat功能 或者该功能是否有特殊情况 repeat功能有什么优势吗 编辑 我对这个问
val times = 5
// First option
for (i in 0 until times) {
print("Action $i")
}
// Second option
repeat(times) {
print("Action $it")
}
我想知道这个计划的目的
- 如果可能,是否应将传统的
循环替换为for
功能李>repeat
- 或者该功能是否有特殊情况
功能有什么优势吗repeat
编辑 我对这个问题做了一些研究。只要kotlin是开源项目,我就可以下载源代码并检查git历史 我发现 1)
repeat
函数是对次
函数扩展的替换
public inline fun Int.times(body : () -> Unit)
2) <代码>时间功能已被弃用。但是为什么呢?下面几行都是我的观点:
- 当您应该或不应该使用
功能repeat
- 它有更简洁的语法李>
- 在不需要操作循环计数器的地方,或者在不需要重复循环计数器的地方,我只会使用该函数
/**
* Executes the given function [action] specified number of [times].
*
* A zero-based index of current iteration is passed as a parameter to [action].
*
* @sample samples.misc.ControlFlow.repeat
*/
@kotlin.internal.InlineOnly
public inline fun repeat(times: Int, action: (Int) -> Unit) {
contract { callsInPlace(action) }
for (index in 0 until times) {
action(index)
}
}
如您所见,repeat(times)
实际上是for(索引为0,直到times)
还有一个基于零的循环计数器,它是:
it
如果出现以下情况,是否应将传统的for循环替换为repeat函数 可能吗 我找不到任何理由 或者该功能是否有特殊情况 没有我能想到的 重复功能有什么优势吗 没有我能想到的,或者也许(?)只有1:
出于教育目的,我认为教学更容易
repeat(n){}
在花括号内对语句块执行n次迭代。这只是一个方便的问题(缩短代码)。甚至还有更多的方法,例如使用内部网
和forEach
(0..4).forEach {
println(it)
}
01 2 3 4
它们都有相同的用途,所以选择权在你
您也不需要担心性能,因为
repeat
和forEach
是内联函数,这意味着lambda代码在编译时被复制到调用站点。与repeat(times)
相当的是for(i in 0直到times)
而不是for(i in 0..times)
它实际上更简洁。我不经常使用它,但在解析文件时有很多次。假设我解析的字段告诉我有多少个点/位置跟随,我可以使用repeat(numPoints){points+=parsePosition(stream)}
来解析它们。我本来可以用来表示
,但是重复
比较短,我觉得读起来更好。有趣的是:readCount times{rl.unlock()}
-这是2015年使用的时间扩展。无点符号。