scalaの演算子リロードコードの詳細な説明
1158 ワード
overload_exercise.scalaコードは次のとおりです.
実行方法は、scalac overload_exercise.scala scala Overload_Exercise実行結果:(1+2 i)+(2-3 i)=3-1 i
実は、+号の左右にあるclassをそれぞれ処理したいなら、このclassの内部で記号をリロードします.
object Overload_Exercise extends Serializable {
//------------------------ ------------------------------------------------
class Complex(val real: Int, val imaginary: Int)
{
def +(operand: Complex): Complex = {// , Complex
new Complex(real + operand.real, imaginary + operand.imaginary)
}// , COmplex , , .
override def toString(): String = // String , .
{
real + (if (imaginary < 0) "" else "+") + imaginary + "i"
}
}
//------------------------ ------------------------------------------------
def main(args: Array[String]): Unit = {
val c1 = new Complex(1, 2)// class
val c2 = new Complex(2, -3)
val sum = c1 + c2
// , , , + , .
println("(" + c1+ ")+ (" + c2 + ")=" + sum)
}
}
実行方法は、scalac overload_exercise.scala scala Overload_Exercise実行結果:(1+2 i)+(2-3 i)=3-1 i
実は、+号の左右にあるclassをそれぞれ処理したいなら、このclassの内部で記号をリロードします.