Un metodo Scala di 0-arità può essere definito con o senza parentesi ()
. Questo è usato per segnalare all'utente che il metodo ha qualche tipo di effetto collaterale (come la stampa di std out o distruzione di dati), in contrapposizione a quello senza, che può essere implementato successivamente come val
.
Vedi Programming in Scala:
Tali metodi senza parametri sono abbastanza comuni in Scala. Al contrario, i metodi definiti con parentesi vuote, come ad esempio def height(): Int, sono chiamati metodi paren vuoti. La convenzione raccomandata è di usare un metodo senza parametri ogni volta che non ci sono parametri e il metodo accede allo stato mutabile solo leggendo i campi dell'oggetto contenente (in particolare, non cambia lo stato mutabile).
Questa convenzione sostiene il principio di accesso uniforme [...]
In sintesi, è incoraggiato stile a Scala per definire i metodi che non prendono i parametri e non hanno effetti collaterali come i metodi senza parametri, vale a dire, lasciando fuori dal parentesi vuote. D'altra parte, non dovresti mai definire un metodo che abbia effetti collaterali senza parentesi, perché le invocazioni di quel metodo apparirebbero come una selezione di campi.
fonte
2011-09-29 17:34:44
@MatthewFarwell Non credo che la domanda collegata risponda alla domanda Parens. –
E vedi anche http://stackoverflow.com/questions/6939908/scala-functions-with-no-arguments –
Domanda http://stackoverflow.com/questions/7409502/what-is-the-difference-between-def -foo-and-def-foo-in-scala è esattamente lo stesso. – paradigmatic