Scala-隐式转换-私有函数-重载-构造器
来源:互联网 发布:淘宝开店做代理 编辑:程序博客网 时间:2024/06/05 15:06
package com.zhu.scala/** * Created by zhuhailong-dc on 2017/3/3. * * Scala编译器将把你放在类内部的任何不是字段的部分或者方法定义的代码,编译进主构造器中 * 1.先决条件 * 2.函数重载 * 3.操作符重载 * 4.私有函数 * 5.隐式转换 */class Rational(n:Int,d:Int){ //先决条件使用 require require(d!=0) require(n!=1) //在初始化Rational对象的时候执行 //println("created "+n+"/"+d) //重载toString函数 override def toString = n+"/"+d //添加字段 val number:Int=n val denom:Int=d def add(that:Rational):Rational={ println(n) println(d) new Rational(number*that.denom+that.number*denom,denom*that.denom) } def lessThan(that:Rational)=this.number*that.denom<that.number*this.denom def max(that:Rational)=if(this.lessThan(that)) that else this /** * 从构造器 * Scala里的每一个从构造器的第一个动作都是调用同一个类里面其他的构造器.换句话说就是,每个Scala类里的每个从构造器都是以this(..) * 形式开头的.被调用的构造器即可以是主构造器,也可以是从文本上来看早于调用它的其他构造器.这个规则的根本结果就是每一个Scala * 的构造器调用终将结束于对类的主构造器的调用.因此主构造器是类的唯一入口点 */ def this(n:Int)=this(n,1) //私有字段和方法 private def gcd(a:Int,b:Int):Int=if(b==0) a else gcd(b,a%b) private val g=gcd(n.abs,d.abs) //定义操作符 def +(that:Rational):Rational=new Rational(number*that.denom+that.number*denom,denom*that.denom) def *(that:Rational):Rational=new Rational(number*that.number,denom*that.denom) //scala标识符 //方法重载 def +(i:Int):Rational=new Rational(number+i*denom,denom)}object Scala_4 { def main(args: Array[String]): Unit = { val rational=new Rational(2,2) //如果给0会提示 java.lang.IllegalArgumentException: requirement failed //println(rational.toString) val tmp1=new Rational(2,2) val tmp2=new Rational(2,3) val res1=tmp1 add tmp2 val res2=tmp1.add(tmp2) val res3=tmp1 add(tmp2) //println(res1) //println(res2) //println(res3) val x=new Rational(2,2) val y=new Rational(2,3) //println(x+y) //println(x.+(y)) //println(x+x*y) //隐式转换 /** * 会抛出异常 2没有 * 方法 * 这行代码定义了从Int到Rational的转换方法,方法前面的implicit修饰符告诉编译器若干情况下自动调用它 */ implicit def intToRational(x:Int)=new Rational(x) val r=new Rational(2,3) println(2*r) }}
0 0
- Scala-隐式转换-私有函数-重载-构造器
- Scala : 主构造器、私有构造器、构造器重载
- scala隐式转换函数
- Scala学习第八天 Scala主构造器、私有构造器、构造器重载实战详解
- scala-08Scala主构造器、私有构造器、构造器重载实战详解
- Scala学习第八天 Scala主构造器、私有构造器、构造器重载实战详解
- 类型转换构造函数隐式调用与运算符重载参数类型的不对应
- 对象隐式转换,复制构造函数和重载等号运算符的区别
- 转换构造函数 复制构造函数 操作符重载
- C++重载之转换构造函数与类型转换函数
- scala基础10-主构造器/辅助构造器/私有构造器
- Scala学习笔记——主构造器、辅助构造器与私有构造器
- 008-Scala主构造器、私有构造器、构造器重载实战详解
- 008-Scala主构造器、私有构造器、构造器重载实战详解
- 第8讲 Scala主构造器、私有构造器、构造器重载实战详解
- 0008.Scala主构造器、私有构造器、构造器重载实战详解
- Scala主构造器、私有构造器、构造器重载实战详解
- 8.Scala主构造器、私有构造器、构造器重载实战详解
- Scala和Java的区别--Object与Class的区别
- Swift3.0基础知识脑图01
- Office2016零售版(Retail)转批量授权(VOL)
- MySQL数据备份之mysqldump使用
- 进程间通信——管道
- Scala-隐式转换-私有函数-重载-构造器
- Linux切换目录命令
- 搭建本地Docker环境
- VMWare不同物理主机上虚拟机的网络互通
- Bootstrap 模态框插件
- 编译安装apache
- mysql常用语句、命令(增删改查功能)
- 天梯赛--集合相似度
- 山东大学软件学院数据结构课程设计第三题