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

scala – 从辅助构造函数初始化val

发布时间:2020-12-16 18:42:46 所属栏目:安全 来源:网络整理
导读:我有以下课程代表一些金额: class Money(initDollars: Int,initCents: Int){ require (initDollars = 0 initCents = 0) private def this(positive: Boolean,initDollars: Int,initCents: Int) = { this(initDollars,initCents) //this.positive = positive
我有以下课程代表一些金额:

class Money(initDollars: Int,initCents: Int){

  require (initDollars >= 0 && initCents >= 0)

  private def this(positive: Boolean,initDollars: Int,initCents: Int) = {
    this(initDollars,initCents)
    //this.positive = positive
  }

  val positive: Boolean = true
  val dollars = initDollars + initCents/100
  val cents = initCents % 100
  private val totalAmount = dollars * 100 + cents

  def unary_- = new Money(!positive,dollars,cents)
}

object Money{
  def apply(initDollars: Int,initCents: Int) = new Money(initDollars,initCents)
}

金额也可能是负数,我想像这样创建它:

val am = -Money(1,20)

所以我想从辅助构造函数初始化val positive,但我不能这样做,因为它重新分配给val.我也无法在辅助构造函数的参数列表中添加val.有人可以帮忙吗?

解决方法

反过来做.

class Money private (pos: Boolean,initCents: Int) {

  require (initDollars >= 0 && initCents >= 0)

  def this(initDollars: Int,initCents: Int) = {
    this(true,initDollars,initCents)
  }

  val positive: Boolean = pos
  val dollars = initDollars + initCents/100
  val cents = initCents % 100
  private val totalAmount = dollars * 100 + cents

  def unary_- = new Money(!positive,cents)
}

(编辑:李大同)

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

    推荐文章
      热点阅读