[英]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) }
對於案例類CallEquityOption
和PutEquityOption
我可以使用與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.