É possível chamar um método usando notação infix?
Por exemplo, em Haskell, eu poderia escrever a seguinte função:
x `isAFactorOf` y = x % y == 0
e depois use-o como:
if 2 `isAFactorOf` 10 ...
O que, em alguns casos, permite código muito legível. Existe algo semelhante a isso possível em Scala? Eu procurei por "notação de infixo Scala", mas esse termo parece significar algo diferente em Scala.
Essencialmente, no Scala, você não pode chamar uma função de maneira infix, mas pode definir um método em um tipo, no qual o argumento esquerdo pode ser convertido implicitamente. Portanto, para o seu exemplo, você pode definir uma classe que possui o método isAFactorOf (usando um Int) e indicar que um Int pode ser implicitamente convertido em uma instância dessa classe.
Se você olhar para esta resposta /programming//a/3119671 para outra pergunta, verá a sintaxe no Scala que funciona de maneira equivalente.
fonte
implicit class RichInt(i: Int) { def square() = i * i }
.