![](/img/trans.png)
[英]Scala Breeze: can you create a DenseMatrix of Int Array elements?
[英]Can't create Breeze DenseMatrix with Scala3
當嘗試使用 Scala 3 創建 Option 類型的密集矩陣時,我收到錯誤消息。
val dm1 = DenseMatrix((1,2),(1,2)) // <- this works
val dm2 = DenseMatrix((Some(1),Some(2)),(Some(1),Some(2))) <- doesn't work
錯誤:沒有找到類型為 breeze.storage.Zero[V] 的隱式參數,用於特征 MatrixConstructors 中方法的參數零
順便說一句,它在 Scastie 和 Scala 2 工作。
嘗試添加必要的隱式
implicit val optIntZero: Zero[Option[Int]] = Zero(Some(0))
implicit val someIntZero: Zero[Some[Int]] = Zero(Some(0))
或更一般地
implicit def optZero[A](implicit zero: Zero[A]): Zero[Option[A]] = Zero(Some(zero.zero))
implicit def someZero[A](implicit zero: Zero[A]): Zero[Some[A]] = Zero(Some(zero.zero))
要不就
implicit def someZero[F[t] >: Some[t], A](implicit zero: Zero[A]): Zero[F[A]] = Zero(Some(zero.zero))
另一種簡單的方法。 創建一個“簡單類型”矩陣和 map 到目標類型。
val v = DenseVector(1, 1, 1)
val dm1 = DenseMatrix(v,v)
val dm2 = dm1.map( Some(_))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.