5
A
回答
11
是的,很可能:
>> def perform(functions:() => Unit*) = for (f <- functions) f()
>> perform(() => println("hi"),() => println("bye"))
hi
bye
perform: (functions:() => Unit*)Unit
記住,重複參數公開爲Seq[TheType]
。在這種情況下,Seq[() => Unit]
,雖然它可能有點令人困惑,因爲它看起來像像*
應該有更高的優先權,但它不。
注意,使用括號產生相同類型:
>> def perform(functions:(() => Unit)*) = for (f <- functions) f()
perform: (functions:() => Unit*)Unit
編碼愉快。
2
@pst給了你答案,我只是再添加一點點以備將來參考。
比方說,你發現自己的功能如下集合:
val fcts = List(() => println("I hate"),() => println("this"))
如果試圖在REPL
perform(fcts) // this does not compile
將無法正常工作執行此。
但是你可以告訴編譯器,你真正想實現的是通過列表作爲Java數組(這是可變參數是如何在字節碼錶示)
perform(fcts : _*) // works.
顯然,這種擱置任何Scala集合,而不僅僅是List。
相關問題
- 1. 在Javascript中使用可變參數函數調用可變參數函數?
- 2. JRuby:如何調用沒有可選參數的Java可變參數函數
- 3. 可變參數模板參數包擴大函數調用
- 4. 如何調用可變數量參數的函數?
- 5. 調用可變參數與參數
- 6. Java的可變參數函數參數
- 7. 可變參數函數(不帶參數!)
- 8. 如何在可變參數函數中的所有參數上調用std :: forward?
- 9. 如何使用單參數調用javascript函數可以通過變量參數調用函數?
- 10. 如何定義可變參數函數
- 11. 如何迫使可變參數函數
- 12. 如何將函數變量調用到其他函數參數或參數中?
- 13. 使用可變參數模板從Lua函數回調(C api)提取參數
- 14. Java可變函數參數
- 15. F#可變函數參數
- 16. Smalltalk可變參數函數
- 17. PHP函數可變參數
- 18. 如何在帶參數的函數中調用變量函數?
- 19. 如何閱讀可變參數函數參數?
- 20. 使用另一個可變參數函數的未命名參數調用可變參數
- 21. 從模板類調用可變參數函數
- 22. 使用可變參數類型參數的變量函數
- 23. 從具有可變數字參數的函數的指針圖調用函數
- 24. 可變參數模板類 - 可變參數成員函數
- 25. 如何將可變參數傳遞給接受可變參數的函數?
- 26. 如何從函數參數
- 27. 如何從JavaScript中的函數參數調用函數?
- 28. 如何從參數數組中調用回調函數?
- 29. 如何使用數組和參考參數調用void函數
- 30. 如何分割函數調用參數
在Ruby中,我們稱之爲「splatting」參數。 – 2011-08-26 16:11:01