Tôi muốn có thể chuyển đổi hoàn toàn Tuples số (Ints và double) thành đối tượng vectơ.Làm cách nào để chuyển đổi hoàn toàn Tuples thành véc tơ trong Scala
Giả sử một lớp Vector với một phương pháp +
case class Vector(x: Double, y:Double){
def + (v:Vector)= new Vector(x+v.x,y+v.y)
}
Mục tiêu của tôi là phải có công việc mã sau.
val vec = (1,2)+(.5,.3) // vec == Vector(1.5,2.3)
tôi có thể lấy nó để làm việc cho Int
như sau
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)
Nhưng nó không thành công khi tôi thêm các chuyển đổi cho đôi
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
Cố gắng chỉ tăng gấp đôi mỗi sugestion Andri của
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
Tôi cần làm gì để làm việc này?
Cảm ơn bạn. Tôi rõ ràng là một thằng ngốc vì tôi vẫn không thể làm cho nó hoạt động được. – ScalaNoob