Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 从受自我类型约束的多个特征中定义一个特征_Scala_Scalatest_Self Type - Fatal编程技术网

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