2017-06-20 56 views
1

我想編寫一個通用的轉換功能轉換的Double個序列到任何Numeric類的東西沿着線:通用轉換爲數字

def construct[T : Numeric](a: Seq[Double]): Seq[T] = { 
    val n = implicitly[Numeric[T]] 
    a.map { value => 
     value 
     ??? 
    } 
    } 

逆很簡單,使用NumerictoDouble,但我沒有找到如何做這個方向的方法。如何做到這一點?

回答

2

n.fromInt(value.toInt),但如果你不想失去精度,你的運氣不好,scala.math.Numeric。我建議實施你自己的類型班級:

trait Num[T] { def fromDouble(d: Double): T } 

object Num { implicit val wateveryouneed = ... }  

def construct[T](a: Seq[Double])(implicit n: Num[T]: Seq[T] = 
    a.map(n.fromDouble)