Ho una classe di casi che memorizza tre parametri associati. Mi piacerebbe definire oggetto associato che possono costruire la classe da qualsiasi coppia di parametri, qualcosa che assomiglia alla esempio riportato di seguito, che è ovviamente sbagliato:definire argomenti con nome predefinito in termini di altri argomenti in scala
def test(start : Float = end - duration, duration : Float = end - start, end : Float = start + duration) {
require(abs(start + duration - end) < epsilon)
...
}
val t1 = test(start = 0f, duration = 5f)
val t2 = test(end = 4f, duration = 3f)
val t3 = test(start = 3f, end = 5f)
Quali trucchi posso usare per ottenere la sintassi utilizzo simile?
Nota che questo funziona solo se i tuoi argomenti hanno tipi diversi. Non è possibile sovraccaricare 'apply' in questo modo a causa della compatibilità con Java. (In Java i nomi degli argomenti non fanno parte dell'interfaccia pubblica). – gzm0