小编use*_*046的帖子

Scala如何将案例类转换为函数?

我试图了解如何将案例类作为参数传递给接受函数作为参数的函数。下面是一个示例:

考虑以下功能

def !![B](h: Out[B] => A): 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更新!以上以及InOut定义:

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)

scala function currying

2
推荐指数
1
解决办法
94
查看次数

标签 统计

currying ×1

function ×1

scala ×1