Czy można wywołać metodę za pomocą notacji infix?
Na przykład w Haskell mógłbym napisać następującą funkcję:
x `isAFactorOf` y = x % y == 0
a następnie użyj go w następujący sposób:
if 2 `isAFactorOf` 10 ...
Co w niektórych przypadkach pozwala na bardzo czytelny kod. Czy coś podobnego do tego jest możliwe w Scali? Szukałem „notacji Scala infix”, ale termin ten wydaje się oznaczać coś innego w Scali.
Zasadniczo w Scali nie można wywoływać funkcji w sposób niepoprawny, ale można zdefiniować metodę na typie, do którego lewy argument można przekonwertować niejawnie. Na przykład możesz zdefiniować klasę, która ma metodę isAFactorOf (biorąc Int) i wskazać, że Int może być niejawnie przekonwertowany na instancję tej klasy.
Jeśli spojrzysz na tę odpowiedź https://stackoverflow.com/a/3119671 na inne pytanie, zobaczysz składnię w Scali, która działa równorzędnie.
źródło
implicit class RichInt(i: Int) { def square() = i * i }
.