Scala,使用包含隐式参数的多参数组方法?

Scala,使用包含隐式参数的多参数组方法?,scala,currying,Scala,Currying,在发现这一点之后,我试图得到一个部分应用的函数,它需要隐式参数 这是不可能的。如果没有,你能解释一下原因吗 scala> def sum(a: Int)(implicit b: Int): Int = { a+b } sum: (a: Int)(implicit b: Int)Int scala> sum(3)(4) res12: Int = 7 scala> val partFunc2 = sum _ <console>:8: error: could not

在发现这一点之后,我试图得到一个部分应用的函数,它需要隐式参数

这是不可能的。如果没有,你能解释一下原因吗

scala> def sum(a: Int)(implicit b: Int): Int = { a+b }
sum: (a: Int)(implicit b: Int)Int

scala> sum(3)(4)
res12: Int = 7

scala> val partFunc2 = sum _
<console>:8: error: could not find implicit value for parameter b: Int
       val partFunc2 = sum _
                       ^
scala>defsum(a:Int)(隐式b:Int):Int={a+b}
求和:(a:Int)(隐式b:Int)Int
scala>总和(3)(4)
res12:Int=7
scala>val partFunc2=sum_
:8:错误:找不到参数b:Int的隐式值
val partFunc2=总和_
^

我使用单例对象来创建这个部分应用的函数,我想在定义隐式int的范围内使用它。

这是因为在范围内没有隐式int。见:

scala> def foo(x: Int)(implicit y: Int) = x + y
foo: (x: Int)(implicit y: Int)Int

scala> foo _
<console>:9: error: could not find implicit value for parameter y: Int
              foo _
              ^

scala> implicit val b = 2
b: Int = 2

scala> foo _
res1: Int => Int = <function1>

谢谢但正如我所说,我需要在另一个单例对象中声明这个函数。我需要在使用它的上下文之外声明它。编辑了我的帖子。我认为没有其他方法可以做到这一点,原因我已经提到了。你是对的。由于currying提供函数且函数不允许隐式参数,我需要明确列出两组中的一组的参数。欢迎使用SO!请考虑留下一些直观的解释,而不是只是张贴代码。
object Foo {
  def partialSum(implicit x: Int) = sum(3)(x)
}
scala> object MySingleton {
 |   def sum(a: Int)(implicit b: Int): Int = { a+b }
 |  
 |
 |   def caller(a: Int) =  {
 |     implicit val b = 3; // This allows you to define the partial below
 |     def pf = sum _      // and call sum()() without repeating the arg list. 
 |     pf.apply(a)
 |   }
 | } 
defined module MySingleton


scala> MySingleton.caller(10)
res10: Int = 13