Ho pensato che molti linguaggi orientati agli oggetti hanno una parola chiave riservata per i metodi che non modificano lo stato di un oggetto. Questi metodi hanno spesso nomi che iniziano con get
. AFAIK un "getter" è sempre correlato a un singolo attributo dell'oggetto e "accessor" è troppo generico, quindi "readonly" può essere il termine giusto per questo tipo di metodi (?). Per fare un esempio:
object Timespan {
attribute start
attribute end
// getter, not changing the state
readonly method getStart { return start }
readonly method getEnd { return end }
// also not changing the state
readonly method getDuration { return ( end - start ) }
}
Il compilatore / interprete dovrebbe verificare che i metodi readonly non abbiano effetti collaterali modificando gli attributi dell'oggetto. Mi chiedo perché questa caratteristica del linguaggio non sia più comune - solo nominare un metodo getFoo
non garantisce che non modificherà l'oggetto.