在下面的scala代码中:
object Timer
{
def oncePerSecond(callback: () => Unit): Unit =
{
while (true)
{
callback()
Thread.sleep(1000)
}
}
def main(args: Array[String]): Unit =
{
oncePerSecond(() =>
Console.println("Time flies... oh, you get the idea."))
}
}
当作为参数传入时,匿名函数是否首先执行 然后再循环一秒钟?
答案 0 :(得分:4)
它是作为其中一部分执行的:
while (true)
{
callback()
Thread.sleep(1000)
}
因此它将每秒执行一次,从传入时开始执行。它只在循环中执行。在传递时不会正常执行,例如
def oncePerSecond(callback: () => Unit): Unit = {
if (....) {
callback()
}
}
只有在满足特定条件时才会执行该方法。