Ausgabe
Beim Versuch, mit Scala 3 eine dichte Matrix vom Typ Option zu erstellen, erhalte ich eine Fehlermeldung.
val dm1 = DenseMatrix((1,2),(1,2)) // <- this works
val dm2 = DenseMatrix((Some(1),Some(2)),(Some(1),Some(2))) <- doesn't work
Fehler: Kein implizites Argument des Typs „breeze.storage.Zero[V]“ wurde für den Parameter null der Methode „apply“ in der Eigenschaft „MatrixConstructors“ gefunden
Übrigens, es funktioniert in Scastie und Scala 2.
https://scastie.scala-lang.org/89HUyuXNQrqWDPNpRbtrOw
Lösung
Versuchen Sie, das notwendige implizit hinzuzufügen
implicit val optIntZero: Zero[Option[Int]] = Zero(Some(0))
implicit val someIntZero: Zero[Some[Int]] = Zero(Some(0))
oder allgemeiner
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))
oder nur
implicit def someZero[F[t] >: Some[t], A](implicit zero: Zero[A]): Zero[F[A]] = Zero(Some(zero.zero))
Problem mit Beweisparametern im Wind
Beantwortet von – Dmytro Mitin
Antwort geprüft von – Senaida (FixError Volunteer)