2013-12-02 5 views
4

Я не уверен, почему этот простой код приведет к ошибке:асинхронной в Скале: макрос не был расширен

object Main { 

    def main(args: Array[String]) { 
    val userInterrupted: Future[String] = async { 
     var inp = await { Future.userInput("")} 
     "You entered... " + inp 
    } 
    } 
} 

Сообщение об ошибке:

[error] /Users/reactive programming coursera/nodescala/src/main/scala/nodescala/Main.scala:18: macro has not been expanded 
[error]  val userInterrupted: Future[String] = async { 
[error]           ^
[error] one error found 
[error] (assignment/compile:compile) Compilation failed 

ответ

10

Это, кажется, a known problem (который был исправлен, но, вероятно, не будет доступен до Scala 2.11). Как это надо делать с неявным, вы можете попробовать работать вокруг него, делая неявное явного:

var inp = await { FutureCompanionOps(Future).userInput("") } 

(Поскольку этот вопрос связан с Coursera assignment, я знаю, что вы определили implicit class FutureCompanionOps[T], который принимает параметр типа и, как представляется, здесь проблема.)