2015-12-01 1 views
0

Как создать класс Inventory, который имеет 2 метода (добавить и вычесть), который добавляет или вычитает сумму в класс Item и возвращает новый элемент с правильно настроенным счетчиком?Как изменить существующий класс с классом, содержащим 2 метода?

Язык: 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 
    } 
} 

Примечание: Я не могу понять, как изменить класс Item с классом Inventory, содержащим 2 метода. Любая помощь приветствуется.

+0

Скотт, вы должны поместить весь код в подсветку синтаксиса кода. Исправьте это, пожалуйста. –

+0

Ashwin, Прости меня, я все еще учусь. Похоже, кто-то его исправил, и я сделаю это в следующий раз. –

+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) 
    } 
} 

EDIT: за свой комментарий, чтобы добавить проверку, что сумма> 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 
    } 
} 
+0

Как бы вы могли добавить в этот код выражения else? Например, когда сумма должна быть больше 0. Когда я добавляю в if else заявления, я получаю ошибку несоответствия типа. –

+0

@ScottWright Я отредактировал свой ответ, чтобы показать прямолинейный способ включения if-else. – Shadowlands

+0

Удивительно, спасибо. –

Смежные вопросы