2013-05-31 57 views
0

我有一個類包含多個變量包含整數,我想要一個方法增加其中一個取決於一定數量的調用。如何增加多個變量?

case class Bank { 
    private var depo = 0 
    private var loan = 0 


    def deposit(amount: Int): Boolean = { 
     if(amount>0) { 
     depo += amount 
     true 
     } else false 
    } 

    def withdraw(amount: Int): Boolean = { 
     if(amount > 0 && amount <= balance) { 
     depo -= amount 
     true 
     } else false 
    } 

    def balance_=(b:Int) = { 
    if(b >= 0) { 
     if(b < depo) withdraw(depo-b) else deposit(b-depo) 
    } else false 
    } 

    def balance = depo 
} 

當我想增加存款,我只是叫

myBank.balance += 10 

但是當我現在想增加貸款,我必須寫一個額外的方法,對嗎? 有沒有寫這樣

increaser(varToIncrease, amount) 

的方法的可能性是可能的,甚至有用嗎?或者我必須爲每個變量寫一個「增量」方法嗎?

+3

爲什麼不簡單'+ ='? –

+0

我同意@ om-nom-nom。爲什麼有一個函數來執行添加,除非在這個函數中發生了額外的事情(如副作用,這應該可以避免) – cmbaxter

+0

感謝您的答案。我對Scala很陌生。我的問題是,當我想將var x增加100時,我用x.increase(100)來做這件事,但是當我想增加var y時,我必須爲y寫第二種方法。這對我來說沒有意義,但我不知道如何解決這個問題。 – Mikkel

回答

1

看看這是你在找什麼,根據您的補充意見:

case class Bank { 
    private var depo = 0 
    private var loans = 0 


    def deposit(amount: Int): Boolean = addTo(amount, depo += amount) 

    def loan(amount: Int): Boolean = addTo(amount, loans += amount) 

    private def addTo(amount:Int, func: => Unit):Boolean = { 
    if(amount > 0) { 
     func 
     true 
    } 
    else 
     false  
    } 



    def withdraw(amount: Int): Boolean = { 
     if(amount > 0 && amount <= balance) { 
     depo -= amount 
     true 
     } else false 
    } 

    def balance_=(b:Int) = { 
    if(b >= 0) { 
     if(b < depo) withdraw(depo-b) else deposit(b-depo) 
    } else false 
    } 

    def balance = depo 
    def loanAmount = loans 
} 

object BankTest{ 
    def main(args: Array[String]) { 
    val b = new Bank 
    println("Starting amounts, " + b.balance + ", " + b.loanAmount) 

    b.deposit(10) 
    println(b.balance) 
    b.deposit(-1) 
    println(b.balance) 

    b.loan(100) 
    println(b.loanAmount) 
    b.loan(-50) 
    println(b.loanAmount) 
    } 

} 

我創建了兩個公共職能分別增大餘額和貸款金額。然後,我創建了一個間隔addTo函數來處理執行操作以增加其中一個變量的業務邏輯。

+0

非常感謝您的幫助,cmbaxter! – Mikkel

1

您不能在另一個方法內增加整數參數。如果你想創建一個你想要的方法,你必須將一個不可變的對象傳入方法。