scala中的隐式类型转换
2017-11-13 22:20
148 查看
写一个类测试一下Scala中的隐式转换的用法:
class Fraction(n: Int, d: Int) { // def den = d private val den = d; // def num = n 类参数定义为方法或字段都可以 private val num = n; // 定义乘法 def *(other: Fraction) = Fraction(other.num * this.num, other.den * this.den) // 重写toString override def toString() = s"$num / $den" } //伴生对象 object Fraction { // implicit隐转 方法名无关可以随意改,自动调用 implicit def int2Fraction(n: Int) = Fraction(n, 1) def apply(n: Int, d: Int) = { new Fraction(n, d) } def unapply(frac: Fraction) = if (frac.den == 0) None else Some((frac.num, frac.den)) } object TestFrac extends App{ // 3 隐式调用了int2Fraction方法被转化为一个Fraction对象Fraction(3,1) val result = 3 * Fraction(4,5) // 也可以显示调用 val result2 = Fraction.int2Fraction(5) * Fraction(3,4) println(result) // unapply val Fraction(num,den) = result println(num,den) }
相关文章推荐
- 学习Scala:Map初始化过程详解及隐式类型转换
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- 【Scala类型系统】隐式转换与隐式参数
- Scala学习笔记--隐式类型和隐式转换
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- scala中的Map初始化过程详解及隐式类型转换
- scala学习手记35 - 隐式类型转换
- Scala 2.10.0 新特性之使用隐式类进行类型隐式转换
- Scala教程(十七)Scala隐式类型转换详解
- scala的implicit关键字----不仅仅是隐式类型转换
- scala学习笔记(十六) 类型参数与隐式转换
- c++中的explicit关键字及隐式类型转换
- Scala进阶之隐式转换作用域等问题
- VS ---- 无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState"
- C++ 隐式类型转换
- Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL
- JavaScript-数据类型-隐式转换1
- SQL中int类型与varchar类型的隐式转换
- .net隐式类型转换
- C++隐式类类型转换