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.