¿Es posible llamar a un método usando notación infija?
Por ejemplo, en Haskell, podría escribir la siguiente función:
x `isAFactorOf` y = x % y == 0
y luego úsalo como:
if 2 `isAFactorOf` 10 ...
Lo que en algunos casos permite un código muy legible. ¿Es posible algo similar a esto en Scala? Busqué "notación Scala infijo", pero ese término parece significar algo diferente en Scala.
Esencialmente, en Scala no puede llamar a una función de manera infija, pero puede definir un método en un tipo, al que el argumento izquierdo se puede convertir implícitamente. Entonces, para su ejemplo, puede definir una clase que tenga un método isAFactorOf (tomar un Int) e indicar que un Int puede convertirse implícitamente en una instancia de esta clase.
Si observa esta respuesta /programming//a/3119671 a otra pregunta, verá la sintaxis en Scala que funciona de manera equivalente.
fuente
implicit class RichInt(i: Int) { def square() = i * i }
.