說我有一個功能用可變參數調用帶有命名參數的函數的Scala語法是什麼?
def f(a:Int = 0, b:String = "", c:Float=0.0, foos: Foo*) { ... }
注意使用默認參數的一些參數。通常情況下,儘量使用默認值,你調用一個函數命名參數,如下所示:
val foo = Foo("Foo!")
f(foos = foo)
這句法的作品,因爲我只是調用方法與一個foo
。但是,如果我有兩個或更多的
val foo1 = Foo("Foo!")
val foo2 = Foo("Bar!")
f(foos = ...)
它不是那麼明顯什麼應該喂在這裏。 Seq(foo1,foo2)
和Seq(foo1,foo2):_*
不要鍵入檢查。
更重要的是,我怎樣稱呼它否foo
s?
// All out of foos!
f(foos = ...)
對於這種情況,調用帶有空括號(f()
)的功能不起作用。
謝謝!
你使用的是什麼版本的scala? 2.9.2試圖在REPL中定義f會給我一個「:9:錯誤:帶有參數'*'的參數段不允許有默認參數」 –
我在2.9.2上看到這個爲好。但是,我正在編譯的實際代碼正在運行2.9.1,顯然這是合法的。 – fatuhoku