Say Mam funkcjiCo to jest składnia Scala wywołująca funkcję z argumentami variadic, ale z nazwanymi argumentami?
def f(a:Int = 0, b:String = "", c:Float=0.0, foos: Foo*) { ... }
Zauważ użycie domyślnych argumentów dla niektórych parametrów. Zazwyczaj, aby skorzystać z wartości domyślnych, należy wywołać funkcję z nazwanych parametrów tak:
val foo = Foo("Foo!")
f(foos = foo)
Ta składnia działa, ponieważ Ja tylko wywołanie metody z jednej foo
. Jeśli jednak mam dwa lub więcej niż jeden, to nie jest to tak oczywiste, co powinno zostać tutaj podane. Powrót na górę Seq(foo1,foo2)
i Seq(foo1,foo2):_*
nie sprawdzaj typu.
Co więcej, jak można to nazwać z numerami nofoo
?
// All out of foos!
f(foos = ...)
W tym przypadku wywołanie funkcji z pustych nawiasów (f()
) nie działa.
Dzięki!
jakiej wersji scali używasz? Z 2.9.2 próby zdefiniowania f w REPL daje mi ": błąd 9: sekcja parametru z parametrem" * "nie może mieć domyślne argumenty" –
Widzę to na 2.9.2 jako dobrze. Jednak rzeczywisty kod, który kompiluję, działa 2.9.1, gdzie najwyraźniej jest to zgodne z prawem. – fatuhoku