gpt4 book ai didi

java - 如何在 Scala 中向枚举添加方法?

转载 作者:IT老高 更新时间:2023-10-28 20:48:49 25 4
gpt4 key购买 nike

在 Java 中你可以:

public enum Enum {
ONE {
public String method() {
return "1";
}
},
TWO {
public String method() {
return "2";
}
},
THREE {
public String method() {
return "3";
}
};

public abstract String method();
}

你如何在 Scala 中做到这一点?

编辑/有用的链接:

最佳答案

这是一个通过扩展 Enumeration.Val 类向 scala 枚举添加属性的示例。

object Planet extends Enumeration { 
protected case class Val(val mass: Double, val radius: Double) extends super.Val {
def surfaceGravity: Double = Planet.G * mass / (radius * radius)
def surfaceWeight(otherMass: Double): Double = otherMass * surfaceGravity
}
implicit def valueToPlanetVal(x: Value) = x.asInstanceOf[Val]

val G: Double = 6.67300E-11
val Mercury = Val(3.303e+23, 2.4397e6)
val Venus = Val(4.869e+24, 6.0518e6)
val Earth = Val(5.976e+24, 6.37814e6)
val Mars = Val(6.421e+23, 3.3972e6)
val Jupiter = Val(1.9e+27, 7.1492e7)
val Saturn = Val(5.688e+26, 6.0268e7)
val Uranus = Val(8.686e+25, 2.5559e7)
val Neptune = Val(1.024e+26, 2.4746e7)
}

scala> Planet.values.filter(_.radius > 7.0e6)
res16: Planet.ValueSet = Planet.ValueSet(Jupiter, Saturn, Uranus, Neptune)

关于java - 如何在 Scala 中向枚举添加方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com