我正在练习我的Scala,也就是特征,我有点卡住了。我决定把X战警的种类分成不同的类别和特征。
我被困在Power属性上了。我想要一个单例的力量列表
我想要的基本上是:
var Rogue = new HomosapienSuperior()
Rogue.addPower("Super Human Strength")使用addPower将检查电源的单例列表,以查看是否添加了能力,如果没有添加,则抛出异常,并告诉用户首先将其添加到电源的单例列表中。
object Power {
val powers = new HashMap[String, String] // power -> description, list of Power!
val secondaryPowers = new HashMap[String, String] // "Fly" -> "Can fly"
}
import Power._
import scala.collection.mutable.HashMap
class Power(power: String) {
//How do I refer to the object/singleton Power list?
}
abstract class Homosapien {
def name:HashMap[String, String]
def sex: Sex
}
class HomosapienSuperior(
val name:HashMap[String, String],
val sex:Sex,
val power: Power
) extends Homosapien所以我在考虑这样做:
class Power(power: String) {
var power = List[String]
def addPower(power: String): List = {
//check the object Power.powers(power)
// if not in the object Power throw exception else
// new list (power) prepend this.power
}
//How do I refer to the object/singleton Power list?
}但我不知道如何引用object Power中的变量。
到目前为止我的代码:
object Sex extends Enumeration {
type Sex = Value
val male = Value("male")
val female = Value("female")
val other = Value("other")
}
object Power {
val powers = new HashMap[String, String] // power -> description
val secondaryPowers = new HashMap[String, String]
}
import Sex._
import Power._
import scala.collection.mutable.HashMap
class Power(power: String) {
}
abstract class Homosapien {
def name:HashMap[String, String]
def sex: Sex
}
class HomosapienSuperior(
val name:HashMap[String, String],
val sex:Sex
/*
val power:HashMap[String, String],
val secondaryPower:HashMap[String, String] */
) extends Homosapien with power with secondaryPower
class HomosapienSuperiorSuperior(
val name:HashMap[String, String],
val sex:Sex
//val power:HashMap[String, String]
) extends Homosapien with power
trait power {
val power = List[Power] //power name and description
}
trait secondaryPower {
val secondaryPower = List[Power] //power name and description
}注意:我还没有读到关于case类的章节,我阅读了Altima的Scala 2ed书中的编程。
谢谢您抽时间见我。
发布于 2011-08-10 07:58:04
要通过Class访问对象:
Power.powers答案由agilesteel提供
https://stackoverflow.com/questions/7003684
复制相似问题