20.2. Modyfikator implicit w funkcjach anonimowych
Pojedynczy nazwany parametr funkcji anonimowej, nieujęty w nawiasy, można poprzedzić modyfikatorem implicit. W takim przypadku jednak tego parametru nie traktuje się tak, jak przekazywanej niejawnie listy parametrów. W przypadku wywołania takiej funkcji, argument należy jej przekazać jawnie. Poniższa definicja tworzy i przypisuje do wartości callGreetingPeter funkcję anonimową, mającą jeden parametr o nazwie gw. Funkcja służy do wywołania metody greeting z pliku ImplicitParameters1.scala.
scala> :load ImplicitParameters1.scala Loading ImplicitParameters1.scala... greeting: (name: String)(implicit greetWord: String)String scala> val callGreetingPeter:(String) => String = | implicit gw => greeting("Peter") callGreetingPeter: String => String = <function1>
Dzięki temu, że parametr gw funkcji callGreetingPeter ma modyfikator implicit, wywołanie metody greeting wewnątrz tej funkcji jest prawidłowe, mimo tylko jednej jawnie podanej listy argumentów.
scala> callGreetingPeter("Hi") res0: String = Hi Peter!
Natomiast pominięcie listy argumentów nie powoduje wywołania funkcji, a jedynie odwołanie się do samej wartości callGreetingPeter.
scala> implicit val h = "Hello" h: String = Hello scala> callGreetingPeter res1: String => String = <function1>