Mam klasę case, która przechowuje trzy powiązane parametry. Chciałbym określić przedmiot towarzysz, który może zbudować klasę z dwoma parametrami, coś, co wygląda jak poniżej próbki, które jest oczywiście błędna:definiuje domyślne nazwane argumenty pod względem innych argumentów w 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)
Jakie sztuczki mogę użyć, aby uzyskać podobną składnię użytkowaniu?
Należy zauważyć, że działa to tylko wtedy, gdy argumenty mają różne typy. Nie można przeciążać 'apply' w ten sposób ze względu na kompatybilność z Javą. (W Javie nazwy argumentów nie są częścią interfejsu publicznego). – gzm0