簡體   English   中英

Scala中子類的特征中的默認類型類實現

[英]Default type class implementation in trait for sub-classes in Scala

我有以下關系:

trait Instrument

trait EquityOption extends Instrument { ... }
case class CallEquityOption(...) extends EquityOption
case class PutEquityOption(...) extends EquityOption

trait Priceable[I <: Instrument] { def price(I : Instrument) }

對於案例類CallEquityOptionPutEquityOption我可以使用與Priceable完全相同的實現。 通過match case來區分Call...Put... 但是,如果我嘗試在object EquityOption下直接將其實現為Priceable[EquityOption] ,則無法找到隱式,因為它與類型不完全匹配。

如何在不需要重復代碼的情況下使其工作?

您必須證明您可以為EquityOption每個子類型提供實例。

implicit def allEquityOptions[T <: EquityOption]: Pricable[T] = ???

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM