1
鑑於以下階代碼中使用的路徑依賴型:在一個超類簽名
import java.util.NoSuchElementException
import spray.json.{JsString, JsValue, JsonFormat, deserializationError}
class EnumJsonFormat[EnumType <: Enumeration](val enum: EnumType) {
val format: JsonFormat[enum.Value] = new JsonFormat[enum.Value] {
override def write(obj: enum.Value): JsValue = ???
override def read(json: JsValue): enum.Value = ???
}
}
class EnumJsFormat[EnumType <: Enumeration](val enum: EnumType) extends JsonFormat[enum.Value] {
override def write(obj: enum.Value): JsValue = ???
override def read(json: JsValue): enum.Value = ???
}
第一個版本編譯,並提供枚舉(縮小)串行我需要。第二個失敗,編譯器報告not found: value enum
不幸的是這馬鞍我的不雅需要除了不必要的「外部對象」引用來引用format
場(new EnumJsonFormat(MyEnum).format
而不僅僅是new EnumJsFormat(MyEnum)
)。
有沒有辦法在超類簽名或其他任何成語中使用路徑依賴類型來「掩蓋」內部字段?
不知道是什麼原因。你的解決方法似乎是需要的,或者像'特質Foo [A] {def foo(v:A):Unit}; def Bar [EnumType <:Enumeration](enum:EnumType):Foo [enum.Value] = new Foo [enum.Value] {def foo(v:enum.Value)= ??? }' – cchantep
也許相關https://github.com/buildo/ingredients/tree/master/caseenum – Reactormonk