如何使用单个隐式参数调用 object.apply? [复制]

Posted

技术标签:

【中文标题】如何使用单个隐式参数调用 object.apply? [复制]【英文标题】:how to invoke object.apply with single implicit parameter? [duplicate] 【发布时间】:2019-05-09 05:57:04 【问题描述】:

我正在尝试做这样的事情

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()

我可以不加括号吗?

【问题讨论】:

【参考方案1】:

这是一个不带括号的解决方案...

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 调用,其优点是不会更改您的原始签名。

希望对你有帮助。

【讨论】:

以上是关于如何使用单个隐式参数调用 object.apply? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

基本语言

Scala 系列(十三)—— 隐式转换和隐式参数

如何使用单个参数从 Javascript 调用 Objective-C 方法并在 Xcode 中处理它

Scala基础:隐式转换与隐式参数

Scala之Object (apply) dycopy

call和apply