什么是Scala改进?

时间:2015-12-05 19:34:14

标签: scala

一个简单的周末。关于这实际上是什么的文档几乎没有,可能藏在语言规范中。应该很简单 - scala中的“细化”是什么?

这里有一些远非诱人的代码:

class Foo[T, A <: SomeType](
  val io: Serializer[T, A] with Deserializer[T, A],
)

稍微强制编译器我收集ioSerializer[T,A]Deserializer[T,A]的细化。凉。什么时候可以在scala中使用?规则是什么?是with的任何用途,实际上技术上是一种改进?

P.S. here's something general about the term

2 个答案:

答案 0 :(得分:2)

不,这不是一个改进,它是一个没有细化的复合类型。有关详细信息,请参阅http://www.scala-lang.org/files/archive/spec/2.11/05-types.html#compound-types

  

复合类型T_1 with … with T_n { R }表示在组件类型T_1,...,T_n和细化{ R }中指定成员的对象。

答案 1 :(得分:1)

Serializer是一个班级,Deserializertrait。使用构造Serializer[T, A] with Deserializer[T, A],您基本上创建了一个继承自SericalizerDeserializer的新类(没有正确的名称)。请注意,在Scala中,您可以从一个类和任意数量的特征继承。

由于这是继承工作,是的,这是一个改进。