Thank you for last comment in the previous blog. Here's the improved version of Complex Number.
Number.metaClass.plus = { n ->
if(n instanceof Imaginary) {
new Complex(r:delegate, i:n.v)
}
}
Number.metaClass.getI = { ->
new Imaginary(v: delegate)
}
class Complex {
def r
def i
String toString() {
"$r + ${i}i"
}
}
class Imaginary {
def v
def plus(n) {
if(n instanceof Number) new Complex(r:n, i:this.v)
}
}
def b = 2 + 2.4.i
def c = 4.2.i + 2
println b
println b.class
println c
println c.class
Number.metaClass.plus = { n ->
if(n instanceof Imaginary) {
new Complex(r:delegate, i:n.v)
}
}
Number.metaClass.getI = { ->
new Imaginary(v: delegate)
}
class Complex {
def r
def i
String toString() {
"$r + ${i}i"
}
}
class Imaginary {
def v
def plus(n) {
if(n instanceof Number) new Complex(r:n, i:this.v)
}
}
def b = 2 + 2.4.i
def c = 4.2.i + 2
println b
println b.class
println c
println c.class