|
Scala example source code file (unapplyComplex.scala)
The Scala unapplyComplex.scala source codetrait Complex extends Product2[Double, Double] { def canEqual(other: Any) = other.isInstanceOf[Complex] } class ComplexRect(val _1: Double, val _2: Double) extends Complex { override def toString = "ComplexRect("+_1+","+_2+")" } class ComplexPolar(val _1: Double, val _2: Double) extends Complex { override def toString = "ComplexPolar("+_1+","+_2+")" } object ComplexRect { def unapply(z:Complex): Option[Complex] = { if(z.isInstanceOf[ComplexRect]) Some(z) else z match { case ComplexPolar(mod, arg) => Some(new ComplexRect(mod*Math.cos(arg), mod*Math.sin(arg))) } } } object ComplexPolar { def unapply(z:Complex): Option[Complex] = { if(z.isInstanceOf[ComplexPolar]) Some(z) else z match { case ComplexRect(re,im) => Some(new ComplexPolar(Math.sqrt(re*re + im*im), Math.atan(re/im))) } } } object Test { def main(args:Array[String]) = { new ComplexRect(1,1) match { case ComplexPolar(mod,arg) => // z @ ??? Console.println("mod"+mod+"arg"+arg) } val Komplex = ComplexRect new ComplexPolar(Math.sqrt(2),Math.Pi / 4.0) match { case Komplex(re,im) => // z @ ??? Console.println("re"+re+" im"+im) } } } Other Scala examples (source code examples)Here is a short list of links related to this Scala unapplyComplex.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.