Die apply-Methode verwandelt ein Objekt in eine Funktion. Der Wunsch ist es, eine Funktionssyntax zu verwenden, wie z. B.:
f(args)
Aber Scala hat sowohl eine funktionale als auch eine objektorientierte Syntax. Die eine oder die andere muss die Basis der Sprache sein. Scala wählt (aus einer Vielzahl von Gründen) die objektorientierte Form als Basis der Sprache. Das bedeutet, dass jede Funktionssyntax in eine objektorientierte Syntax übersetzt werden muss.
Hier kommt die Anwendung ins Spiel. Jedes Objekt, das über die apply-Methode verfügt, kann mit dieser Syntax verwendet werden:
f(args)
Die Scala-Infrastruktur übersetzt das dann in
f.apply(args)
f.apply(args) hat eine korrekte objektorientierte Syntax. Eine solche Übersetzung wäre nicht möglich, wenn das Objekt keine apply-Methode hätte!
Kurz gesagt, die apply-Methode in einem Objekt zu haben, ermöglicht es Scala, die Syntax: object(args) in die Syntax: object.apply(args) zu verwandeln. Und object.apply(args) ist in der Form, die dann ausgeführt werden kann.
Zu Ihrer Information: Dies impliziert, dass alle Funktionen in Scala Objekte sind. Und es bedeutet auch, dass die apply-Methode ist, was ein Objekt eine Funktion macht!
In der akzeptierten Antwort finden Sie weitere Informationen darüber, inwiefern eine Funktion ein Objekt ist und welche Tricks dabei angewendet werden können.