我知道如何将时间作为repeat
函数的第一个参数传递:
repeat(3) {
println("This will print 3 times")
}
但我检查了Kotlin文档,它显示了另一个参数action
可供使用(参见kotlin doc):
inline fun repeat(times: Int, action: (Int) -> Unit)
我尝试了此代码,但因错误期待')' 而失败:
repeat(3, 2 -> anotherFun()) {
println("This will show 2 times?")
}
fun anotherFun() {
println("head into the 2nd time and print this out.")
}
我知道我有语法错误。所以我的问题是:(Int) -> Unit
是什么以及如何正确使用action参数?
答案 0 :(得分:2)
什么是(Int) - >单位以及如何正确使用动作参数?
(Int) -> Unit
描述了一个带Int
并返回Unit
(void)的函数。为了按原样调用它,你可以这样做:
repeat(3, {anotherFunction()})
或者
repeat(3) {
anotherFunction()
}
然而,将要发生的迭代次数不可用,但您可以通过借用标准库中的迭代来定义自己的迭代次数......
public inline fun repeat(times: Int, action: (Int, Int) -> Unit) {
for (index in 0 until times) {
action(times, index)
}
}
然后你可以像这样使用它:
repeat(3) { times, i ->
println("Called $i/$times")
}
答案 1 :(得分:1)
我知道我有语法错误。所以我的问题是:什么是(Int) - >单位以及如何正确使用动作参数?
repeat(3) {
println("This will print 3 times, $it cycle number")
}
答案 2 :(得分:0)
如果您需要在lambda中进行迭代的总数,还可以预先在其外部声明变量(ngFor
):
val