【问题标题】:Scala: Wrapping params/argumentsScala:包装参数/参数
【发布时间】:2014-05-03 16:57:58
【问题描述】:

如果我举一个我正在尝试做的事情的例子可能会更好。假设我有这样的事情:

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 做到这一点?

【问题讨论】:

    标签: scala


    【解决方案1】:
        def foo(a: String, b: String, c: String) = 0
    
        object Bar {
          val fooArgs = ("a", "b", "c")
        }
    
        foo.tupled(Bar.fooArgs)
    

    【讨论】:

    • 获取ambiguous reference to overloaded definition 即使foo(Bar.a, Bar.b, Bar.c) 工作正常
    • @Jon 如果 foo 超载,您可以使用此怪诞查询选择您想要的:(X.foo _: ((String,String,String)=>String)).tupled((a,b,c))
    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多