scalaの演算子リロードコードの詳細な説明

1158 ワード

overload_exercise.scalaコードは次のとおりです.
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の内部で記号をリロードします.