首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单例变量和具有单例变量赋值函数类

单例变量和具有单例变量赋值函数类
EN

Stack Overflow用户
提问于 2011-08-10 06:15:03
回答 1查看 268关注 0票数 0

我正在练习我的Scala,也就是特征,我有点卡住了。我决定把X战警的种类分成不同的类别和特征。

我被困在Power属性上了。我想要一个单例的力量列表

我想要的基本上是:

代码语言:javascript
复制
var Rogue = new HomosapienSuperior()
Rogue.addPower("Super Human Strength")

使用addPower将检查电源的单例列表,以查看是否添加了能力,如果没有添加,则抛出异常,并告诉用户首先将其添加到电源的单例列表中。

代码语言:javascript
复制
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

所以我在考虑这样做:

代码语言:javascript
复制
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中的变量。

到目前为止我的代码:

代码语言:javascript
复制
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书中的编程。

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-10 07:58:04

要通过Class访问对象:

代码语言:javascript
复制
Power.powers

答案由agilesteel提供

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7003684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档