我有一个方法调用一些其他方法,使用隐式类型Foo
.我想在Foo中隐含f.我是这样做的:
def myMethod(a: Int, f: Foo) = {
implicit val implicitF = f;
somethingThatNeedsFoo(a)
}
Run Code Online (Sandbox Code Playgroud)
我不想f
在myMethod的签名中标记隐式,因为Foos并不隐含在使用myMethod的上下文中.我的问题:与使用临时变量相比,是否有更惯用(或简洁)的方法来实现这种效果?
我从未见过这个实际使用过,但你可以避免将变量绑定到名称.当然,使用下划线:
implicit val _ = f
Run Code Online (Sandbox Code Playgroud)
不过,我建议不要这样做.
您可以显式传递隐式参数,因此即使调用者的隐式作用域中没有 Foo,调用者也可以显式传递它。
正如所评论的,您可以使用相同的技巧将 Foo 传递给somethingThatNeedsFoo
:
def myMethod(a: Int, f: Foo) =
somethingThatNeedsFoo(a)(f)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
686 次 |
最近记录: |