Bevor irgendetwas anderes gesagt wird, ist def
kein Feld definieren, ist es, ein Verfahren definiert.
Im zweiten Fall können Sie wegen einer bestimmten Eigenschaft von Scala Klammern weglassen. Es gibt zwei Unterschiede, die hier von Interesse sind: eine mechanische und eine empfohlene Verwendung.
Beginnend mit dem Letzten wird empfohlen, die leere Parameterliste zu verwenden, wenn es Nebenwirkungen gibt. Ein klassisches Beispiel ist close()
. Sie würden Klammern weglassen, wenn das Aufrufen des Elements keine Nebenwirkungen hat.
Jetzt, als ein praktischer Unterschied - über mögliche komische syntaktische Verwechslungen in Eckfällen (ich sage nicht, es gibt nur Vermutungen) - müssen strukturelle Typen der richtigen Konvention folgen.
Zum Beispiel hatte Source
eine close
Methode ohne Klammern, wäre eine strukturelle Art von def close(): Unit
bedeutet nicht akzeptieren Source
. Wenn ich eine Strukturmethode wie def close: Unit
definiere, werden Java-Objekte closeable
ebenfalls nicht akzeptiert.
Eigentlich verwenden, Scala finden Sie eine beliebige Anzahl von (nachgestellt) elide lassen leere Parameterlisten! Versuchen Sie 'def x()()()()()()() = 5 '! –