Scala is the new buzz word. I call it "a better Java". It is clean and rich with syntax sugars. Following is a program to manage money objects, to do operations on it and to convert from one currency to another.
Money.scala
Main.scala
Output
Money.scala
class Money(val amount: Double = 0, val currency: String = Money.US$.currency, val valuePerUSD: Double = Money.US$.valuePerUSD) { def +(that: Money) = new Money((this.amount / this.valuePerUSD + that.amount / that.valuePerUSD) * this.valuePerUSD, this.currency, this.valuePerUSD) def -(that: Money) = new Money((this.amount / this.valuePerUSD - that.amount / that.valuePerUSD) * this.valuePerUSD, this.currency, this.valuePerUSD) def ->(that: Money) = new Money((this.amount / this.valuePerUSD) * (that.valuePerUSD), that.currency, that.valuePerUSD) override def toString = s"$currency$amount" } object Money { lazy val INR = new Money(currency = "INR", valuePerUSD = 60) val US$ = new Money(currency = "$", valuePerUSD = 1) lazy val SR = new Money(currency = "SR", valuePerUSD = 4) }
Main.scala
object Main { def main(args: Array[String]) = { println("** Welcome to Scala Money Manager **") val _120INR = new Money(120, Money.INR.currency, Money.INR.valuePerUSD) println("My Balance = " + _120INR) println("My Balance in USD = " + (_120INR -> Money.US$)) //Different ways of creating Money objects val _0Dollars = new Money val _10Dollars = new Money(10) val _0INR = new Money(currency = Money.INR.currency, valuePerUSD = Money.INR.valuePerUSD) println("Adding $10 to my balance, therefore My Balance = " + (_120INR + _10Dollars)) println("Adding $12 and $8, converting result into INR = " + ((new Money(12) + new Money(8)) -> Money.INR)) println("INR12 + SR10 = " + (new Money(12, Money.INR.currency, Money.INR.valuePerUSD) + new Money(10, Money.SR.currency, Money.SR.valuePerUSD))) val _1SaudiRiyal = new Money(1, Money.SR.currency, Money.SR.valuePerUSD) println("SR1 + INR120 + $2 in INR = " + (_1SaudiRiyal + _120INR + new Money(2) -> Money.INR)) } }
Output
** Welcome to Scala Money Manager ** My Balance = INR120.0 My Balance in USD = $2.0 Adding $10 to my balance, therefore My Balance = INR720.0 Adding $12 and $8, converting result into INR = INR1200.0 INR12 + SR10 = INR162.0 SR1 + INR120 + $2 in INR = INR255.0
No comments:
Post a Comment
Your comments are very much valuable for us. Thanks for giving your precious time.