【发布时间】:2012-08-23 03:24:21
【问题描述】:
我有一个方法可以调用其他一些使用Foo 类型的隐式方法。我想让 f 隐含在 Foo 中。我就是这样做的:
def myMethod(a: Int, f: Foo) = {
implicit val implicitF = f;
somethingThatNeedsFoo(a)
}
我不想在 myMethod 的签名中隐含标记 f,因为 Foos 在使用 myMethod 的上下文中并不隐含。我的问题:有没有比使用临时变量更惯用(或简洁)的方式来实现这种效果?
【问题讨论】:
-
在这个简单的例子中,直接传递
f可能比使用隐式更容易——但我假设你的真实代码足够复杂,足以让隐式变得有价值。在这种情况下,如果您想避免在方法签名中将参数本身声明为隐式,我认为您在方法内声明implicit val的解决方案是最好的方法。 -
@DaoWen 你真的应该提交你的评论作为答案。
-
@Aaron Novstrup - 是的,看看我可能应该得到的其他答案。我在这里还是很新,所以我仍然很难决定什么属于答案与评论的类别。