Apakah mungkin untuk memanggil metode menggunakan notasi infix?
Misalnya, di Haskell, saya bisa menulis fungsi berikut:
x `isAFactorOf` y = x % y == 0
dan kemudian gunakan seperti:
if 2 `isAFactorOf` 10 ...
Yang dalam beberapa kasus memungkinkan untuk kode yang sangat mudah dibaca. Apakah ada yang serupa dengan ini di Scala? Saya mencari "notasi Scala infix", tetapi istilah itu sepertinya berarti sesuatu yang berbeda dalam Scala.
Pada dasarnya, di Scala Anda tidak dapat memanggil fungsi dengan cara infiks, tetapi Anda dapat mendefinisikan metode pada tipe, yang argumen kiri dapat dikonversi secara implisit. Jadi untuk contoh Anda, Anda dapat mendefinisikan kelas yang memiliki metode isAFactorOf (mengambil Int) dan menunjukkan bahwa Int dapat secara implisit dikonversi ke turunan dari kelas ini.
Jika Anda melihat jawaban ini /programming//a/3119671 untuk pertanyaan lain, Anda akan melihat sintaks dalam Scala yang berfungsi setara.
sumber
implicit class RichInt(i: Int) { def square() = i * i }
.