Scala 第一个demo
关于Scala,看了很多关于Scala的语法,但是真正准备写一个项目时,不知道怎么下手,看了《Scala编程》,上面一个例子,还不错,记下来
package com.leep.scala /** * 定义有理数类,并完成加减乘除运算 */ class Rational (n:Int,d:Int){ require(d!=0) // 分母不为零 private val g=gcd(n.abs,d.abs) //最大公约数 val number = n/g val denom = d/g def this(n:Int) = this(n,1) //辅助构造器 def + (that: Rational) :Rational = new Rational (number * that.denom+that.number * denom, denom * that.denom )
def + (i: Int): Rational = new Rational(number + i*denom,denom)
def -(that:Rational) = new Rational( number * that.denom - that.number * denom, denom * that.denom )
def - (i:Int): Rational = new Rational(number - i * denom, denom)
def * (that: Rational) : Rational = new Rational (number * that.number, denom * that.denom)
def * (i: Int) : Rational = new Rational (number * i,denom)
def / (that: Rational) :Rational = new Rational (number * that.denom, denom * that.number)
def / (i : Int) : Rational = new Rational(number, i * denom)
override def toString = number + "/" + denom //重载 toString 方法 /** * 计算两个数的最大公约数 * 用到递归 */ private def gcd(a:Int,b:Int) : Int = { if (b==0) a else gcd(b,a%b) }
} /** * 半身对象,这里主要为测试用 */ object Rational{ def main(args: Array[String]): Unit = { val rl = new Rational(1,2); println(rl) val rs = rl+ new Rational(1); println(rs) }
}
|