scala - scala中的类别名

标签 scala alias

是否可以在 Scala 中定义 MyAlias[A]作为 MyClass[String, A] 的别名.例如,MyAlias[Int]将引用 Map[String, Int] .

最佳答案

请注意 Maptrait ,而不是 class .

您仍然可以使用 type 为其设置别名。关键词:

type StringMap[A] = Map[String, A]

val myMap: StringMap[Int] = Map("a" -> 1)

这可以在 class 的范围内完成。 , objecttrait定义(并且在任何方法或表达式的范围内)。

有时您会希望别名对其声明范围是私有(private)的,纯粹是为了方便您的实现代码。如果您希望该类型普遍可用,Package Objects有用:
package object mypackage {
  type StringMap[A] = Map[String, A]
}

因为Map是一个特征(和关联的伴随对象)而不是一个类,您将无法直接使用它来创建实例:
val myMap = new StringMap[Int]
// error: trait Map is abstract; cannot be instantiated

但是,如果你给一个类起别名,你仍然可以使用 new关键词:
type StringHashMap[A] = HashMap[String, A]
val myMap = new StringHashMap[Int]

关于scala - scala中的类别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10830308/

相关文章:

scala - 我可以使用 SBT 从其目录中组装一个子项目吗?

scala - 评估职能绩效

scala - 不动点理论和 isGoodEnough 函数

scala - 如何更改功能测试的 Guice 绑定(bind)?

git - 我怎样才能使这个 git 命令别名?

scala - akka:使用 akka-typed 实现事件对象模式

bash - 为什么仅在其中一种情况下,别名内的变量扩展有效 "as intended"?

mysql - 如何在MySql中多次使用别名?

documentation - DOXYGEN:创建没有花括号语法的多参数别名,如@param 和其他人(标签!)?

C# 变量名别名