如何使用包含2个方法的类修改现有类?

时间:2015-12-01 04:29:39

标签: scala

如何创建一个Inventory类,它有2个方法(加和减),它们向Item类添加或减去一个金额,并返回一个新的Item,其计数调整正确?

语言:Scala

代码应该做什么:

val Shirts = Item("Hanes", 12)

val Inv = new Inventory

scala> Inv.subtract(5, Shirts)

output: Item(Hanes,7) 

scala> Inv.add(5, Shirts)

output: Item(Hanes,17)

我的代码:

case class Item(val brand: String, val count: Int)

class Inventory  {
  def add(amount:Int):Int={
    count+=amount   
  }

  def subtract(amount:Int):Int={
    count-= amount  
  }
}

注意:我无法弄清楚如何使用包含2个方法的Inventory类修改Item类。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

这应该做的工作:

class Inventory {
  def add(amount:Int, item: Item): Item = {
    item.copy(count = item.count+amount)     
  }

  def subtract(amount:Int, item: Item): Item = {
    item.copy(count = item.count-amount)
  }
}

编辑:根据您的评论,添加支票金额&gt; 0(如果金额<= 0,我只是保持项目不变):

class Inventory {
  def add(amount:Int, item: Item): Item = {
    if (amount > 0) item.copy(count = item.count+amount) else item
  }

  def subtract(amount:Int, item: Item): Item = {
    if (amount > 0) item.copy(count = item.count-amount) else item
  }
}