这是否可能在scala def convert(f :()⇒Future[Int]):Future [()⇒Int] =?

Pri*_*dam 4 functional-programming scala future

def computeComplexNumber: () ? Future[Int] =
  () ?
    Future {
      println("Computing complex number ...")
      Int.MaxValue
  }

def convert(f: () ? Future[Int]): Future[() ? Int] = ???

convert(computeComplexNumber)
Run Code Online (Sandbox Code Playgroud)

是否可以实现convert具有上述签名的方法,条件是当convert(computeComplexNumber)调用时,除非您这样做,否则不会打印任何内容

Await.result(convert(computeComplexNumber), 5.seconds)()
Run Code Online (Sandbox Code Playgroud)

And*_*kin 10

没有阻挡内部,我没有看到任何方法convert.没有调用就没有办法获取Future[X]内部实例.但是一旦你调用,它就会急切地开始用它来评估块,并产生一个输出.convertffFuture { ... }println

你可能想看一下scalaz.concurrent.Task.