【发布时间】:2014-11-28 05:41:57
【问题描述】:
Scala 类型系统让我发疯。我开始查看基本 scala 包的源代码,这让我大吃一惊。
如果Sequence已经是一个特征(又名接口),有人可以详细说明为什么我们需要定义类型吗?我来自 Java 工作,其中类型是类或接口,但在 scala 类型中似乎更多。
package object scala {
....
type Seq[+A] = scala.collection.Sequence[A]
val Seq = scala.collection.Sequence
....
}
【问题讨论】:
-
第一个定义只是一个别名,它可以让你缩短类型(你不会想每次都写
scala.collection.Sequence[A])。还有这句话:如果 Sequence 已经是一个特征(又名接口),为什么我们还需要定义类型? 没有多大意义,最后,特征不是接口。 -
我不太了解 scala,但我认为这只是一个类型缩写 - 只是为了让事情更短
-
@EndeNeu 进口呢?导入可以解决这个问题。
-
是的,但是这种别名在包文件中的事实使它们隐式可用,当您使用
Seq类型时,您不必向文件添加另一个导入,它已经为你准备好了。
标签: scala types interface traits