簡體   English   中英

無法使用 Scala3 創建 Breeze DenseMatrix

[英]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 工作。

https://scastie.scala-lang.org/89HUyuXNQrqWDPNpRbtrOw

嘗試添加必要的隱式

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM