首页 > 解决方案 > 如何使用单个隐式参数调用 object.apply?

问题描述

我正在尝试做这样的事情

case class Foo(p: Param)

object Bar {
  def apply(implicit p: Param) = Foo(p)
}

def qux(implicit p: Param) {
  .. something
  val foo: Foo = Bar
  .. use foo
}

到目前为止我所达到的是

object Bar {
  def apply()(implicit p: Param) = Foo(p)
}

def ... {
  val foo: Foo = Bar()
}

我可以在没有括号的情况下这样做吗?

标签: scalaimplicit

解决方案


这是一个没有括号的解决方案......

case class Foo(p: Param)

object Bar {
  def apply(implicit p: Param) = Foo(p)
}

def qux(implicit p: Param) {
  // .. something
  val foo: Foo = Bar.apply // the only change is here!
  // .. use foo
}

...但是通过显式apply调用,其优点是不会更改您的原始签名。

希望能帮助到你。


推荐阅读