在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] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |