Scala-lang riferimento 5.5.1 e 6.6.1 mi ha dato l'impressione che un parametro di default sarebbe in grado di fare riferimento a una precedenza valutato uno:Come dovrebbero gli argomenti predefiniti di Scala fare riferimento a un argomento posizionale precedente?
class Test(val first: String, val second: String = first)
ma da sperimentare sembra che l'unico modo per fare questo è quello di utilizzare la forma:
class Test(val first: String)(val second: String = first)
e quindi definire un costruttore ausiliario o una classe guidata creazionale per evitare di specificare il secondo set di staffe durante la creazione. Non capisco davvero come funzioni questo secondo costruttore, sembra una funzione al curry, quindi posso immaginare che sia necessario valutare first
indipendentemente da second
, è corretto? Questa forma è necessaria o c'è dello zucchero sintetico che posso usare per modificare il primo costruttore nel fare ciò che voglio?
Non esiste una (sotto) sezione 5.5.1 nella [Specifica lingua corrente di Scala] (http://www.scala-lang.org/sites/default/files/linuxsoft_archives/docu/files/ScalaReference.pdf) . Intendevi 5.1.1 ("Invocazioni costruttore")? – Philippe
Sì avrebbe dovuto essere 5.1.1. Come @Travis Brown ha sottolineato la sezione 5.3 che definisce l'ambito dei parametri mentre vengono valutati spiegherebbe l'errore di compilazione. – MilesHampson