【问题标题】:What does Scala's "type" keyword mean? [duplicate]Scala 的“type”关键字是什么意思? [复制]
【发布时间】: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


【解决方案1】:

查看Understanding what 'type' does in Scala,了解为什么除了类和特征之外还需要关键字类型。关于为什么 scala 包对象包含这些别名,它出现在文件顶部的注释“核心 Scala 类型。它们总是在没有显式导入的情况下可用。” https://github.com/scala/scala/blob/2.11.x/src/library/scala/package.scala

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2020-10-11
    • 1970-01-01
    相关资源
    最近更新 更多