Est-il possible d'appeler une méthode en utilisant la notation infixe?
Par exemple, dans Haskell, je pourrais écrire la fonction suivante:
x `isAFactorOf` y = x % y == 0
puis l'utiliser comme:
if 2 `isAFactorOf` 10 ...
Ce qui dans certains cas permet un code très lisible. Est-ce que quelque chose de similaire est possible à Scala? J'ai cherché "notation infala Scala", mais ce terme semble signifier quelque chose de différent dans Scala.
Essentiellement, dans Scala, vous ne pouvez pas appeler une fonction de manière infixe, mais vous pouvez définir une méthode sur un type, dans lequel l'argument de gauche peut être converti implicitement. Donc pour votre exemple, vous pouvez définir une classe qui a une méthode isAFactorOf (prendre un Int) et indiquer qu'un Int peut être implicitement converti en une instance de cette classe.
Si vous regardez cette réponse /programming//a/3119671 à une autre question, vous verrez la syntaxe dans Scala qui fonctionne de manière équivalente.
la source
implicit class RichInt(i: Int) { def square() = i * i }
.