2014-05-03 56 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))' –