Tag: 特质

如何混合一个特质到实例?

鉴于MyTrait的特点: trait MyTrait { def doSomething = println("boo") } 它可以被混合成一个类, extends或with : class MyClass extends MyTrait 它也可以在实例化一个新实例时混合使用: var o = new MyOtherClass with MyTrait o.doSomething 但是…可以将特质(或任何其他如果有所不同)添加到现有的实例吗? 我正在Java中使用JPA加载对象,我想用特征添加一些function给他们。 有没有可能? 我想能够混合在一个特质如下: var o = DBHelper.loadMyEntityFromDB(primaryKey); o = o with MyTrait //adding trait here, rather than during construction o.doSomething

在拉拉维尔5哪里放置特征?

我正在使用laravel 5,我对将特征文件放在laravel 5目录结构中的位置感到困惑。 它们应该存在于公共资源还是其他目录中?

为什么一个斯卡拉特质可以扩展一个类?

我发现Scala中的特征与Java中的接口类似(但是Java中的接口扩展了其他接口,它们不扩展类)。 我看到了一个关于特征扩展类的特征的例子 。 这样做的目的是什么? 为什么特质可以扩展类?

特质类如何工作?

我正在阅读Scott Meyers的Effective C ++ 。 他正在谈论特质类,我知道我需要他们在编译期间确定对象的types,但我不明白他对这些类实际做什么的解释? (从技术angular度来看)

在Scala中重载特性和抽象方法

我有一个基本的抽象类(特质)。 它有一个抽象方法foo() 。 它由几个派生类扩展和实现。 我想创build一个可以混合到派生类中的特征,以便它实现foo() ,然后调用派生类的foo() 。 就像是: trait Foo { def foo() } trait M extends Foo { override def foo() { println("M") super.foo() } } class FooImpl1 extends Foo { override def foo() { println("Impl") } } class FooImpl2 extends FooImpl1 with M 我尝试了自我types和结构types,但是我无法得到它的工作。

对抽象类使用特征有什么优点?

有人可以解释斯卡拉的特征吗? 与扩展抽象类相比,特质有什么优点?

使用抽象类而不是特征的优点是什么?

使用抽象类而不是特性(除了性能)的优点是什么? 在大多数情况下,抽象类似乎可以被特征取代。

自我类型和特质子类有什么区别?

A型的自我型: trait B trait A { this: B => } 说“ A不能混入一个不扩展B的具体类” 。 另一方面,以下是: trait B trait A extends B “ A混合的任何(具体的或抽象的)类也将在B中混合” 。 这两个陈述不是这个意思吗? 自我类型似乎只会造成编译时错误的可能性。 我错过了什么?