Je veux être capable de convertir implicitement des Tuples de nombres (Ints et double) en un objet vectoriel.Comment convertir implicitement Tuples en vectoriel dans Scala
En supposant une classe Vector avec une méthode +
case class Vector(x: Double, y:Double){
def + (v:Vector)= new Vector(x+v.x,y+v.y)
}
Mon but est d'avoir le travail de code suivant.
val vec = (1,2)+(.5,.3) // vec == Vector(1.5,2.3)
Je peux obtenir de travailler pour Int
avec les éléments suivants
implicit def int2vec(t:Tuple2[Int,Int])=new Vector(t._1,t._2)
val vec = (1,2)+(3,4) // vec == Vector(4.0,6.0)
Mais il échoue quand j'ajoute la convertion pour le double
implicit def int2vec(t:Tuple2[Int,Int])=new Vector(t._1,t._2)
implicit def double2vec(t:Tuple2[Double,Double])=new Vector(t._1,t._2)
val a = (1,2)
val b = (.5,.3)
val c = (1,1)+b // vec = Vector(1.5,1.3)
val d = (1,2)+(.3,.5) // compile error: wrong number of arguments
val e = (1,2)+((.3,.5)) // compile error: type mismatch
Essayer simplement doubler par la Sugestion de Andri
implicit def double2vec(t:Tuple2[Double,Double])=new Vector(t._1,t._2)
val a = (.5,.3)
val b = (1,1)+a // type mismatch found:(Double,Double) required:String
Que dois-je faire pour que cela fonctionne?
Merci. Je suis évidemment un idiot car je n'arrive toujours pas à le faire fonctionner. – ScalaNoob