使用Kotlin,我可以通过至少两种方式重复执行操作:
val times = 5
// First option
for (i in 0 until times) {
print("Action $i")
}
// Second option
repeat(times) {
print("Action $it")
}
我想知道repeat
的目的。
for
循环替换为repeat
函数? repeat
函数有什么优点吗?编辑
我已经对该问题进行了一些研究。只要kotlin是开源项目,我就可以下载源代码并检查git历史记录。
我发现
1)repeat
函数代替了times
函数扩展。
public inline fun Int.times(body : () -> Unit)
2)KT-7074。 times
函数已被弃用。但是为什么呢?
答案 0 :(得分:0)
接下来的几行只是我的意见:
repeat
功能。完全由您决定何时以及如何使用它。
答案 1 :(得分:0)
从Standard.kt:
/**
* 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 (index in 0 until times)
。
还有一个从零开始的循环计数器,它是:it
。
如果将传统的for循环替换为repeat函数, 可能吗?
我找不到任何原因
此功能是否有特殊情况?
我想不到的。
重复功能有什么优点吗?
我想不起来,也许(?)只是1:
出于教育目的,我想教书更容易
repeat(n) { }
对大括号内的语句块执行n次迭代。
答案 2 :(得分:0)
这只是一个方便问题(缩短代码)。还有更多方法,例如使用IntRange
和forEach
(0..4).forEach {
println(it)
}
0 1 2 3 4
它们都具有相同的目的,所以选择是您的。
您也不必担心性能,因为repeat
和forEach
是内联函数,这意味着lambda代码会在编译时复制到调用站点。