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

在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一样引用它.

(编辑:李大同)

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

    推荐文章
      热点阅读