加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在scala中的类别名

发布时间:2020-12-16 21:31:56 所属栏目:安全 来源:网络整理
导读:在 Scala中可以将MyAlias [A]定义为MyClass [String,A]的别名.例如,MyAlias [Int]将引用Map [String,Int]. 解决方法 请注意,Map是一个特质,而不是一个类. 您仍然可以使用type关键字进行别名: type StringMap[A] = Map[String,A]val myMap: StringMap[Int] =
在 Scala中可以将MyAlias [A]定义为MyClass [String,A]的别名.例如,MyAlias [Int]将引用Map [String,Int].

解决方法

请注意,Map是一个特质,而不是一个类.

您仍然可以使用type关键字进行别名:

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

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

这可以在类,对象或特征定义(在任何方法或表达式的范围内)的范围内完成.

有时你会希望别名对其声明范围是私有的,纯粹是为了方便你的实现代码.如果您希望类型一般可以使用,Package Objects有用:

package object mypackage {
  type StringMap[A] = Map[String,A]
}

因为Map是一个trait(和关联的协同对象)而不是一个类,所以您将无法直接使用它来创建实例:

val myMap = new StringMap[Int]
// error: trait Map is abstract; cannot be instantiated

但是,如果您别名,您仍然可以使用新的关键字:

type StringHashMap[A] = HashMap[String,A]
val myMap = new StringHashMap[Int]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读