我试图了解如何将案例类作为参数传递给接受函数作为参数的函数。下面是一个示例:
考虑以下功能
def !: In[B] = { ... }
Run Code Online (Sandbox Code Playgroud)
如果我正确理解,这是一种多态方法,它具有类型参数,B并且接受函数h作为参数。Out并且In被其他两个类前所定义。
然后,如下所示使用此功能:
case class Q(p: boolean)(val cont: Out[R])
case class R(p: Int)
def g(c: Out[Q]) = {
val rin = c !! Q(true)_
...
}
Run Code Online (Sandbox Code Playgroud)
我知道使用currying是为了避免编写类型注释,而只是编写_。但是,我无法理解为什么以及如何将案例类Q转换为type的函数(h)Out[B] => A。
编辑1更新!以上以及In和Out定义:
abstract class In[+A] {
def future: Future[A]
def receive(implicit d: Duration): A = {
Await.result[A](future, d)
}
def ?[B](f: A …Run Code Online (Sandbox Code Playgroud)