在Scala中使用枚举作为键创建Map的语法是什么?
发布时间:2020-12-16 19:20:16 所属栏目:安全 来源:网络整理
导读:请看下面的代码. Eclipse将此行标记为不正确: var map = Map[MyEnum,Point]() 我试图做scala相当于Java: private enum Letters{ A,B,C}private MapLetters,Integer thing= new HashMapLetters,Integer (); 这是写入它的文件/上下文. class Point(var x:Int
请看下面的代码.
Eclipse将此行标记为不正确:
var map = Map[MyEnum,Point]() 我试图做scala相当于Java: private enum Letters{ A,B,C} private Map<Letters,Integer> thing= new HashMap<Letters,Integer> (); 这是写入它的文件/上下文. class Point(var x:Int = 0,var y:Int = 0,var hasBeenSet:Boolean = false){ } object MyEnum extends Enumeration{ MyEnum = Value val UL,U,UR,L,R,DL,D,DR = Value } object MyEnumHolder { var map = Map[MyEnum,Point]() MyEnum.values.foreach(x => (map + (x -> new Point()) ) } 我试图初始化一个映射的实例,枚举的每个值映射到一个空点(这是每个循环中发生的事情). 编辑:不得不编辑,因为我搞砸了一些编辑粘贴的代码,但它现在应该是有效的 解决方法var map = Map[MyEnum.Value,Point]() 或者我更喜欢 import MyEnum._ var map = Map[MyEnum,Point]() 编辑:为了解释这意味着什么,在枚举中,Value是类型和方法的名称. type MyEnum = Value基本上只是声明Value类型的别名,而下一行val UL,U … = Value正在调用生成枚举的方法,每个枚举都有MyEnum.Value类型.因此,在声明地图时,您必须引用此类型以便键存储枚举.您也可以使用MyEnum.MyEnum,但首先声明类型别名的原因是您可以将其导入范围并且能够像MyEnum一样引用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |