Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个方法可以调用其他一些使用隐式类型的方法Foo。我想让 f 隐含在 Foo 中。我就是这样做的:
Foo
def myMethod(a: Int, f: Foo) = { implicit val implicitF = f; somethingThatNeedsFoo(a) }
我不想f在 myMethod 的签名中标记为隐式,因为 Foos 在使用 myMethod 的上下文中并不隐式。我的问题:有没有比使用临时变量更惯用(或简洁)的方式来实现这种效果?
f
我从未见过实际使用过它,但您可以避免将变量绑定到名称。当然,使用下划线:
implicit val _ = f
不过,我建议不要使用这种用法。
您可以显式传递隐式参数,因此即使调用者的隐式范围内没有 Foo ,调用者也可以显式传递它。
如评论所述,您可以使用相同的技巧将 Foo 传递给somethingThatNeedsFoo:
somethingThatNeedsFoo
def myMethod(a: Int, f: Foo) = somethingThatNeedsFoo(a)(f)