kotlin運算子過載
阿新 • • 發佈:2018-11-02
//運算子過載定義 //任意類可以定義或者過載父類的基本運算子 //通過運算子的具名函式定義 // //過載運輸符 方法名稱 引數個數要對應 引數型別和返回值可以隨意定義 class Complex(var real:Double,var imaginary:Double){ // operator fun plus(other:Complex):Complex{//定義運算子 return Complex(real+other.real,imaginary+other.imaginary) } operator fun plus(a:Int):Complex{//定義運算子 可以定義引數型別 return Complex(real,imaginary+a) } operator fun plus(other:Any):Int{//定義運算子 可以隨意定義返回值 return real.toInt() } operator fun invoke():Double{ return Math.hypot(real,imaginary) } override fun toString(): String { return "${real} ${imaginary}i" } } class Book{ infix fun on(a:Any):Boolean{//定義中綴表示式 return false } } class Desk fun main(args:Array<String>){ val c1 = Complex(3.0,4.0) val c2 = Complex(2.8,3.4) println(c1+c2)// println(c1+5) println(c1())//取模運算 println(Book() on Desk())//infix定義中綴表示式 不需要.方法名 可以作為運算子使用 }