0

在以下 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."))
  }
}

当作为参数传入时,匿名函数是否首先执行,然后在循环中每秒执行一次?

4

1 回答 1

4

它作为其中的一部分执行:

while (true)
{
  callback()
  Thread.sleep(1000)
}

所以它会每秒执行一次,从它传入的时候开始。它只在循环中执行。它在传入时不会正常执行,例如

def oncePerSecond(callback: () => Unit): Unit = {
   if (....) {
      callback()
   }
}

只有满足特定条件时才会执行该方法。

于 2012-12-24T09:48:16.130 回答