7 Stimmen

Typeninferenz von rechts nach links

Ich habe das folgende Codeschnipsel erstellt:

class PimpToRight[A](f: A => Boolean) {
  def <| (a: A) = f(a)
}
implicit def f2pimp[A](f: A => Boolean) = new PimpToRight(f)

class PimpToLeft[A](a: A) {
  def <|: (f: A => Boolean) = f(a)
  def |> (f: A => Boolean) = f(a)
}
implicit def a2pimp[A](a: A) = new PimpToLeft(a)

Es gibt rechts- und links-assoziative Methoden.

Der folgende Code funktioniert:

((_: Int) > 3) <| 7
((_: Int) > 3) <|: 7
7 |> (_ > 3)

Dies ist jedoch nicht der Fall:

(_ > 3) <| 7
(_ > 3) <|: 7

Ist es möglich, Typparameter von rechts nach links abzuleiten?

5voto

Arjan Blokzijl Punkte 6808

Diese beiden Themen sind miteinander verbunden: SI-4773 y SI-1980 . Ausgehend von diesen Punkten scheint die Antwort auf Ihre Frage nein zu sein. Auch wenn es nicht direkt mit Ihrer Frage zu tun hat, gibt es einen sehr schönen Beitrag von Paul Chiusano auf die Typinferenz in Scala optimal ausnutzen die sich mit dem aktuellen Stand der Typinferenz in Scala befasst und einige nützliche Ratschläge gibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X