Scala 从受自我类型约束的多个特征中定义一个特征
我有两个抽象类,如下所示:Scala 从受自我类型约束的多个特征中定义一个特征,scala,scalatest,self-type,Scala,Scalatest,Self Type,我有两个抽象类,如下所示: abstract class BddAsyncSpec extends AsyncFeatureSpec with Matchers with GivenWhenThen with BeforeAndAfter with BeforeAndAfterAll abstract class BddSpec extends FeatureSpec with Matchers with GivenWhenThen with BeforeAndAf
abstract class BddAsyncSpec extends AsyncFeatureSpec
with Matchers
with GivenWhenThen
with BeforeAndAfter
with BeforeAndAfterAll
abstract class BddSpec extends FeatureSpec
with Matchers
with GivenWhenThen
with BeforeAndAfter
with BeforeAndAfterAll
正如您所看到的,mixin部分看起来是一样的。我的问题是,如何抽象mixin部分,当我添加更多trait时,它将应用于BddAsyncSpec和BddSpec。试试看
trait MyTraits extends Matchers
with GivenWhenThen with BeforeAndAfter with BeforeAndAfterAll { this: Suite with Informing => }
abstract class BddAsyncSpec extends AsyncFeatureSpec with MyTraits
abstract class BddSpec extends FeatureSpec with MyTraits
我们使用的地方
因为,例如,Givenwhen需要通知
而且前后前后都需要套房
自我类型是一种指定特质需要什么才能融入的方式 试试看
trait MyTraits extends Matchers
with GivenWhenThen with BeforeAndAfter with BeforeAndAfterAll { this: Suite with Informing => }
abstract class BddAsyncSpec extends AsyncFeatureSpec with MyTraits
abstract class BddSpec extends FeatureSpec with MyTraits
我们使用的地方
因为,例如,Givenwhen需要通知
而且前后前后都需要套房
自我类型是一种指定特质需要什么才能融入的方式 还有另一个共同特征吗
trait T1; trait T2
trait Common extends T1 with T2
abstract class BaseA; abstract class BaseB;
abstract class A extends BaseA with Common
abstract class B extends BaseB with Common
另一个特征是一组共同的特征
trait T1; trait T2
trait Common extends T1 with T2
abstract class BaseA; abstract class BaseB;
abstract class A extends BaseA with Common
abstract class B extends BaseB with Common
trait T1; trait T2
trait Common extends T1 with T2
abstract class BaseA; abstract class BaseB;
abstract class A extends BaseA with Common
abstract class B extends BaseB with Common