在 Scala 中创建使用枚举作为键的 Map 的语法是什么?

2024-01-21

请参阅下面的代码。此行被 Eclipse 标记为不正确:

var map = Map[MyEnum,Point]()

我正在尝试做 Java 的 scala 等价物:

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()) ) 
}

我正在尝试初始化映射的实例,并将枚举的每个值映射到空点(这就是 foreach 循环中发生的情况)。

编辑:必须编辑,因为我在编辑粘贴的代码时搞砸了一些事情,但它现在应该有效


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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Scala 中创建使用枚举作为键的 Map 的语法是什么? 的相关文章

随机推荐