Aus irgendeinem Grund aufmotzen die folgenden nichtScala kann nicht NaturalTransformation in scalaz oder Katzen
object NtExtTest {
implicit class NaturalTransformExt[M[_], N[_]](val self: NaturalTransformation[M,N]) extends AnyVal {
def test(b:Boolean) = b
}
}
arbeiten, wenn ich die Methode test
auf einem natürlichen nennen. Intellij erkennt es als eine Erweiterungsfunktion, aber die Kompilierung gibt value test is not a member of cats.~>
. Das gleiche passiert bei Verwendung der scalaz NaturalTransformation. Kann ich etwas tun, damit die Kompilierung die Erweiterung erkennt?
Scala Version 2.11.8
Ein Beispiel, das fehlschlägt:
import NtExtTest._
class NtTest[B] extends NaturalTransformation[Either[B,?], Xor[B,?]] {
def apply[A](fa: Either[B, A]): Xor[B, A] = {
fa match {
case Left(l) => Xor.left(l)
case Right(r) => Xor.right(r)
}
}
}
val test = new NtTest[String]
test.test(false)
(oben verwendet Art Projektor-Plugin, aber auch nicht mit Typ lambdas oder einzelnen param höher kinded Typen)
Was ist der eigentliche Code, der diesen Fehler erzeugt? –
implizite Klassen sollten innerhalb eines anderen Objekts/Merkmals/Klasse sein. Versuchen Sie, Ihre 'NaturalTransformExt'-Klasse in ein Objekt (zB' Foo') einzubinden und 'import Foo._' zu sagen, bevor Sie' test.test (false) '' http://docs.scala-lang.org/overviews/core aufrufen /implicit-classes.html – smoes
@smoes Entschuldigung angenommen, dass der Code entsprechend geändert wurde –