博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala学习笔记——函数式对象
阅读量:5304 次
发布时间:2019-06-14

本文共 1436 字,大约阅读时间需要 4 分钟。

用创建一个函数式对象(类Rational)的过程来说明

类Rational是一种表示有理数(Rational number)的类

package com.scala.first/**  * Created by common on 17-4-3.  */object Rational {  def main(args: Array[String]) {    var r1 = new Rational(1, 2)    var r2 = new Rational(1)    System.out.println(r1.toString)    System.out.println(r1.add(r2).toString)    var r3 = new Rational(2, 2)    System.out.println(r3)    System.out.println(r1 + r3)  }}class Rational(n: Int, d: Int) {  //检查先决条件,不符合先决条件将抛出IllegalArgumentException  require(d != 0)  //最大公约数  private val g = gcd(n.abs, d.abs)  private def gcd(a: Int, b: Int): Int = {    if (b == 0) a else gcd(b, a % b)  }  //进行约分  val numer: Int = n / g  val denom: Int = d / g  //辅助构造器  def this(n: Int) = this(n, 1)  //定义操作符  def +(that: Rational): Rational = {    new Rational(      numer * that.denom + that.numer * denom,      denom * that.denom    )  }  //方法重载  def +(i: Int): Rational = {    new Rational(      numer + i * denom, denom    )  }  def *(that: Rational): Rational = {    new Rational(      numer * that.numer,      denom * that.denom    )  }  //方法重载  override def toString = numer + "/" + denom  //定义方法  def add(that: Rational): Rational = {    new Rational(      numer * that.denom + that.numer * denom,      denom * that.denom    )  }  //定义方法,自指向this可写可不写  def lessThan(that: Rational): Boolean = {    this.numer * that.denom < that.numer * this.denom  }}

 

转载于:https://www.cnblogs.com/tonglin0325/p/6664884.html

你可能感兴趣的文章
剑指Offer_编程题_7
查看>>
js 变量大小写
查看>>
Linux系统的启动原理
查看>>
JDesktopPane JInternalFrames
查看>>
错误The request sent by the client was syntactically incorrect ()的解决
查看>>
Java基础知识学习(九)
查看>>
redis在windows下总是报错,就是下面的错误,这是哪里出错了
查看>>
Asp.net窄屏页面 手机端新闻列表
查看>>
Linux 密钥验证
查看>>
windows下UDP服务器和客户端的实现
查看>>
MySQL各版本的区别
查看>>
[poj1006]Biorhythms
查看>>
迭代器
查看>>
elasticsearch type类型创建时注意项目,最新的elasticsearch已经不建议一个索引下多个type...
查看>>
jQury 跳出each循环的方法
查看>>
spring AOP 之五:Spring MVC通过AOP切面编程来拦截controller
查看>>
在编译安装程序时候遇到/usr/bin/ld: cannot find -lxxx的时候的解决办法。
查看>>
使用 INSERT 和 SELECT 子查询插入行
查看>>
ubuntu重装mysql
查看>>
English trip -- VC(情景课)1 C What's your name?(review)
查看>>