I numeri razionali modellati dalla classe Rational
sono un concetto tanto naturale quanto i numeri interi modellati da Int
, ma dal punto di vista dell’utilizzo c’è una caratteristica che distingue sintatticamente le due astrazioni:
x + y
per indicare la somma di interix.add(y)
per indicare la somma di razionali.Il linguaggio Scala (come molti altri linguaggi, ma non Java) mette a disposizione degli strumenti per eliminare questa differenza, che in particoalre sono la notazione infissa e gli identificatori simbolici.
Tutti i metodi con un unico argomento possono essere utilizzati in notazione infissa. Ad esempio, nel caso della classe Rational
si può scrivere:
x add y
invece di x.add(y)
x sub y
invece di x.sub(y)
x less y
invece di x.less(y)
L’invocazione di un metodo in notazione infissa è zucchero sintattico, che il compilatore semplicemente riscrive in una normale invoazione con la dot-notation.
In Scala gli identificatori si distinguono, in base ai caratteri da cui sono composti, in due categorie: alfanumerici e simbolici.
Gli identificatori alfanumerici iniziano con una lettera, seguita da una sequenza di lettere e cifre, e infine, opzionalmente, un carattere _
(underscore) seguito da degli operatori.
I caratteri $
e _
sono considerati lettere, ma:
$
non dovrebbe essere usato dal programmatore, in quanto viene usato dal compilatore Scala per contrassegnare i nomi di elementi del codice generati automaticamente (classi di supporto, ecc): se lo si usasse, si potrebbero dunque creare conflitti con tali nomi._
va usato con attenzione, in quanto ha dei significati speciali nel linguaggio.Alcuni esempi di identificatori alfanumerici sono: