博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala 有理数简单应用与scala特性
阅读量:6567 次
发布时间:2019-06-24

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

hot3.png

这里只是简单的实现了一下其中的一些操作
/** * 有理数sample; 有理数谓之:2/3,4/6就是我们说的分数 * @param a 分子 * @param b 分母 */class Rational(a:Int, b:Int) {  require( b != 0)  override def toString = s"$a / $b"  val n = a  val d = b  def this(n:Int) = this(n, 1)  def add(t:Rational) = if (d == t.d)    new Rational(n + t.n,t.d)  else    new Rational(n * t.d + t.n * d, d * t.d)  def * (t:Rational) = new Rational(n * t.n, d * t.d)  def * (t:Int) = new Rational(n * t, d)  def unary_- = new Rational(-n, -d)  def + (t:Rational) = add(t)}object Rational {  implicit def int2Rat(i:Int) = new Rational(i)}// 有理数应用测试val r = new Rational(3, 5)    //r: Rational = 3 / 5-r                            //res0: Rational = -3 / -5val rr = new Rational(4)      //rr: Rational = 4 / 1val rrr = rr * r              //rrr: Rational = 12 / 5rr * 4                        //res1: Rational = 16 / 15 * rr                        //res2: Rational = 20 / 1

这里我们看到scala的如下几个重要的特性:
  • 操作符就是方法 
  • 类构造方法更简单
  • 字段定义都是不可变的
  • 类的对象都是新生成的,而非改变原始对象的状态
  • scala的一元操作符让程序更灵活, 譬如上例:-r 中的应用
  • implicit 的隐式转换。 implicit是一个强大的功能,也是scala增加java的必备利器。上例中实现了int到rational对象的转换
  • class与object。 class就是java中的class, object定义的是一个单例对象

转载于:https://my.oschina.net/gouqizi/blog/632676

你可能感兴趣的文章
RocketMQ生产者流程篇
查看>>
深度学习在美团配送ETA预估中的探索与实践
查看>>
【跃迁之路】【732天】程序员高效学习方法论探索系列(实验阶段489-2019.2.22)...
查看>>
微服务测试之静态代码扫描
查看>>
PAT A1063
查看>>
IOS开发错误library not found for -lXXX
查看>>
Win7安装Docker
查看>>
phpstorm 关闭多余变量提示
查看>>
DOM概述 选取文档元素
查看>>
构建你的第一个Vue.js组件
查看>>
如何完整迁移git仓库到另一个远程地址
查看>>
autocad三维汇报,bim汇报,视图汇报方法
查看>>
JS基础知识学习(一)
查看>>
多条语音消息合成一整条连续播放与进度条功能技术点!
查看>>
通过btrace排查线上频繁Full GC的case
查看>>
SpringBoot+Mybatis配置Druid多数据源
查看>>
java的观察者模式
查看>>
Express.js 中的 Sessions 如何工作?(译)
查看>>
ionic之点击放大图片
查看>>
前端计划——面试题总结-CSS篇
查看>>