2014-03-02 56 views
2

使用:Scala 2.10.3Scala標籤類型

嘗試編譯以下內容時出現錯誤。如果我刪除案例類,那麼它編譯。

Anythoughts上的雙從解決?

object DomainTypes { 
type Tagged[T] = { type Tag = T } 
trait DeviceIdTag 
type DeviceId = Int with Tagged[DeviceIdTag] 

implicit class TaggedInt(val data: Int) extends AnyVal { 

def deviceId = { 
    require(data >= 1) 
    data.asInstanceOf[DeviceId] 
} 
} 
} 

case class DeviceIdHolder(odeviceId:DeviceId) 

[錯誤]類型不匹配; [error] found:Double [error] required:AnyRef [error]注意:隱式存在於scala.Double => java.lang.Double中,但從Object繼承的 [error]方法呈現不明確。這是爲了避免 [錯誤]一個隱式的隱式將轉換任何scala.Double到任何AnyRef。 [錯誤]您可能希望使用類型歸屬:x: java.lang.Double。 [錯誤]一個錯誤發現 [錯誤](編譯:編譯)編譯失敗 [錯誤]總時間:0秒,完成了2014年3月2日上午11時47分01秒

如果更換INT的隨着字符串的編譯,所以我不認爲有任何結構錯誤的本質。

+0

你使用的是什麼版本的scala? – rapvelopment

+0

已更新至版本。這可能與此有關:http://stackoverflow.com/questions/20094679/case-class-companion-object-generation-error-for-compound-type – bearrito

+0

該消息在2.11下可能更有幫助。 –

回答