部分应用具有隐含的方法

时间:2015-04-20 17:57:01

标签: scala

考虑以下方法:

scala> def f(x: Int)(implicit y: Int, z: Int) = x + y + z
f: (x: Int)(implicit y: Int, implicit z: Int)Int

我可以定义一个隐含的,然后应用它。

scala> implicit val x: Int = 5
x: Int = 5

scala> f(10)
res0: Int = 20

但是,显然,我不仅可以指定一个隐含的参数:

scala> f(10)(y = 10)
<console>:10: error: not enough arguments for method f: 
    (implicit y: Int, implicit z: Int)Int.
Unspecified value parameter z.
              f(10)(y = 10)
                   ^

是否可以指定隐式参数,即y,但将z保留为隐式解析?

1 个答案:

答案 0 :(得分:2)

您可以使用implicitly method 来满足参数列表的要求:

scala> f(10)(y = 10, implicitly)
res0: Int = 25

因为它是Predef的一部分,所以它没有任何导入声明。