In Scala, gli operatori sono solo metodi con nomi speciali. Qui ' '.!= recupera ma non applica != all'oggetto ' ' . Questo metodo accetta un parametro e restituisce un valore booleano.
Per qualsiasi funzione f che richiede un singolo argomento, (x => f(x)) e f sono espressioni equivalenti - quindi non è necessario racchiudere una funzione di questo tipo in un'altra lambda.
Il metodo span prende un predicato e divide una sequenza (qui: String) in un prefisso che soddisfa il predicato e un suffisso che non lo fa. Qui vogliamo ottenere la stringa fino al primo spazio.
- Nella prima riga, usiamo il predicato
(_ != ' ') , più chiaramente (c => c != ' ') .
- Ora possiamo scambiare gli argomenti della disuguaglianza "operatore", poiché questa operazione dovrebbe essere riflessiva. Ora abbiamo:
(c => ' ' != c) .
- Ora possiamo utilizzare la sintassi di chiamata del metodo esplicito:
(c => ' '.!=(c)) .
-
Successivamente, salviamo il metodo in un'altra variabile:
val f: (Char => Boolean) = ' '.!=
...
(c => f(c))
-
Come detto sopra, f e (c => f(c)) sono equivalenti, quindi (_ != ' ') e ' '.!= devono essere uguali.