Scala : Overloading operator !

Ce qui est fabuleux avec Scala c’est que vos méthodes peuvent avoir un nom qui peut être assimilé à un opérateur et oui, ou bien contenir des caractères spéciaux.

Ce qui fait la force de ce langage c’est aussi sa flexibilité :

case class Vector(var x: Int, var y: Int, var z: Int)
{
def ?(to : Vector): Boolean =
{
this.equals(to)
}

def +(x: Int, y: Int, z: Int): Unit =
{
this.x += x
this.y += y
this.z += z

}

def -(x: Int, y: Int, z: Int): Unit =
{
this.x -= x
this.y -= y
this.z -= z
}

def *(x: Int, y: Int, z: Int): Unit =
{
this.x *= x
this.y *= y
this.z *= z
}

}

C’est incroyable de simplicité, notez que l’on peut du coup faire de l’overloading operator !

Testons un peu ce code maintenant :

object Test
{
def main(arg: Array[String]): Unit =
{
var vec = Vector(38, 52, 32)
var vec2 = Vector(38, 78, 32)
println(vec ? vec)
vec * (2, 3, 45)
println(vec)
println(vec ? vec2)
}
}
Output : 
true
Vector(76,156,1440)
false

Merci beaucoup d’avoir lu.

A single golf clap? Or a long standing ovation?

By clapping more or less, you can signal to us which stories really stand out.