2013-10-13 90 views
0

在scala中定義了一個類後,我創建的對象似乎是不同的類型。 嘗試創建對象的ListBuffer。試用scala命令行。有人可以解釋這個嗎?Scala:對象有相同的類有不同的類型?

在下面的示例中,我創建了一個class z。試圖將它們添加到ListBuffer

scala> class z() 
defined class z 

scala> var p = new z() 
p: this.z = [email protected] 

scala> var q = new z() 
q: this.z = [email protected] 

scala> var LB = ListBuffer[z](p,q) 
<console>:19: error: type mismatch; 
found : this.z 
required: this.z 
     var LB = ListBuffer[z](p,q) 
          ^
<console>:19: error: type mismatch;  
found : this.z 
required: this.z 
     var LB = ListBuffer[z](p,q) 
           ^
+4

你在REPL中試過嗎?如果在定義p和q之後重新執行第一行(重新定義類z),則可能會產生您所看到的那種錯誤。在乾淨的運行中,我沒有遇到問題。 – Shadowlands

+0

我正在火花外殼中運行。這有什麼區別嗎。它運行Scala2.9.3 – Vijay

+0

我猜測它沒有,但我無法肯定地說。嘗試重新設置並重新運行代碼,確保不要重複任何行 - 假設您可以執行重置(在sbt的控制檯中鍵入':reset')。 – Shadowlands

回答

0

這是當前星火殼牌實現產物的對象時,p和q似乎衝突(例如您的正常工作中經常斯卡拉2.9.3外殼);有a post on the spark-users郵件列表可以更詳細地解釋問題並列出一些解決方法。

相關問題