2014-05-03 53 views
2

如果我舉例說明我正在嘗試做什麼,它可能會更好。說我有這樣的事情:Scala:包裝參數/參數

def foo(a: String, b: String, c: String) = ... 

object Bar { 
    val a = "a" 
    val b = "b" 
    val c = "c" 

    def fooArgs = a, b, c // not possible but it's shows what I'm trying to do 
} 

這樣做將太多*(請記住,我不能改變foo是如何定義的)

foo(Bar.a, Bar.b, Bar.c) 

我想知道是否有可能做這樣的事情:

foo(Bar.fooArgs) 

我該如何使用scala做到這一點?

回答

2
def foo(a: String, b: String, c: String) = 0 

    object Bar { 
     val fooArgs = ("a", "b", "c") 
    } 

    foo.tupled(Bar.fooArgs) 
+0

獲取'曖昧參考超載definition'即使'FOO(bar.a的,Bar.b,Bar.c)'工作正常 – goo

+2

@喬恩如果FOO超載,您可以選擇您想與此grotesquery:'(X.foo _:((String,String,String)=> String))。tupled((a,b,c))' –