2017-09-16 216 views
0

我使用Scala的2.12,我試了一段代碼,在2.11版本編碼的,它不會再編譯:伴侶對象的情況下對象

object MusicController { 
    sealed trait ControllerMsg 
    case object Play extends ControllerMsg 
    case object Stop extends ControllerMsg 
} 

// Music Controller 
class MusicController extends Actor { 
    def receive = { 
     case Play => 
      println("Music Started ...") 
     case Stop => 
      println("Music Stopped ...") 
    } 
} 

我有以下的編譯器錯誤:

not found: value Play 
[error]   case Play => 
not found: value Stop 
[error]   case Stop => 
+0

我無法重現你的問題,如:我可以重現的錯誤發生在2.12,但我不能重現該錯誤不會發生在2.11中。事實上,我確信從每個版本至少2.8開始就會出現錯誤,並且可能至少在所有2.x版本中都會出現錯誤。 –

回答

1

您需要導入MusicController的對象來說

object MusicController { 
    sealed trait ControllerMsg 
    case object Play extends ControllerMsg 
    case object Stop extends ControllerMsg 
} 

// Music Controller 
class MusicController extends Actor { 
    import MusicController._ // <-- IMPORT THIS 
    def receive = { 
     case Play => 
      println("Music Started ...") 
     case Stop => 
      println("Music Stopped ...") 
    } 
} 
+0

謝謝,它正在工作,但爲什麼現在它是這樣的,它在2.11中沒有導入工作,我認爲同伴對象屬性可以從同伴類訪問,如果兩者都定義在同一個文件中。 – jerome

+0

無法在2.11中導入(我已經用2.11.8測試過)。你確定你沒有導入MusicController._?可能是它在文件的最頂端?或者你可以顯示整個來源? – Teimuraz

+0

我無法顯示它是我下載的視頻的來源。您可能是最關鍵的進口商。謝謝。 – jerome

相關問題