scala - 如何使用单个隐式参数调用 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()
}
我可以在没有括号的情况下这样做吗?
解决方案
这是一个没有括号的解决方案......
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
调用,其优点是不会更改您的原始签名。
希望能帮助到你。
推荐阅读
- node.js - Firestore VueJS:无法读取未定义的属性(读取“DEADLINE_EXCEEDED”)
- haskell - Haskell 少输入测试样板
- c - 如何在两个不同的独立进程中使用信号量?
- java - 错误:更新或删除表“课程”违反了表“教师课程”上的外键约束“fk998yb1badftsiklfh13bcw3ol”
- c# - 控制台不显示但第一行
- electron - Electron IpcRendrer 未将数据从 Main 发送到 HTML
- flutter - 如何在 Flutter 中将图标与背景颜色正确居中?
- azure - Azure sql 数据库建议
- python - 如何编写返回数据帧的函数,该数据帧排除指定列中的值超过 max_value 或小于 min_value 的行
- flutter - 如何使用 onGenerateRoute 函数将参数传递给屏幕,如 Flutter 中使用 Getx 的示例