2015-12-21 48 views
0

有什麼辦法可以讓一個阿卡人演員等待用戶輸入嗎? 它似乎只是自己閱讀命令行,並保持爲空。如何等待演員中的用戶輸入?

編輯:代碼的問題部分補充說,問題是,演員不等待readline的,而是試圖將一個空入變量num:

def chooser: Receive = { 

    case ChooseRemote => { 

     println("Available remotes:> ") 
     paths.zipWithIndex.map{ case(x, i) => "num: " + i + " " + x }.foreach(println) 

     println("Enter number:> ") 

     try { 
      val num = scala.io.StdIn.readLine().toInt 

      clientActor ! LookupByLocation(paths(num)) 
     } 
     catch { 

      case _: Exception => 
      //context.system.scheduler.scheduleOnce(1.second, self, ChooseRemote) 
     } 
    } 
    case Found(actor) => { 

     context.become(menu(actor)) 

     context.system.scheduler.scheduleOnce(1.second, self, ChooseMenuItem) 
    } 
} 

def receive: Receive = chooser 

EDIT2:在問題體現在我把:fork in run:= true 在build.sbt文件中。

+0

我認爲您需要提供_little_更多詳細信息代碼會很好。 –

回答

0

實測值的SBT文檔中的答案:

缺省情況下,SBT過程的標準輸入不被轉發到 叉形過程。要啓用此功能,請配置connectInput 設置:connectInput運行:= true