Ist es möglich, eine Methode mit Infix-Notation aufzurufen?
In Haskell könnte ich beispielsweise die folgende Funktion schreiben:
x `isAFactorOf` y = x % y == 0
und dann benutze es wie:
if 2 `isAFactorOf` 10 ...
Dies ermöglicht in einigen Fällen einen gut lesbaren Code. Ist in Scala etwas Ähnliches möglich? Ich habe nach "Scala-Infix-Notation" gesucht, aber dieser Begriff scheint in Scala etwas anderes zu bedeuten.
Im Wesentlichen können Sie in Scala eine Funktion nicht auf Infix-Weise aufrufen, sondern Sie können eine Methode für einen Typ definieren, in die das linke Argument implizit konvertiert werden kann. In Ihrem Beispiel können Sie also eine Klasse mit der Methode isAFactorOf (unter Verwendung eines Int) definieren und angeben, dass ein Int implizit in eine Instanz dieser Klasse konvertiert werden kann.
Wenn Sie sich diese Antwort /programming//a/3119671 auf eine andere Frage ansehen , sehen Sie die Syntax in Scala, die gleichwertig funktioniert.
quelle
implicit class RichInt(i: Int) { def square() = i * i }
.