繁体   English   中英

如何在Scala中的匿名函数中指定元组类型

[英]How to specify tuple type in anonymous functions in scala

我有一个名为map_tree的函数,如下所示:

def fold_tree[A,B](f1: A => B) (f2: (A,B,B) => B) (t: Tree[A]) : B = t match {
    case Leaf(value) => f1(value)
    case Node(value , l, r) => f2 (value, fold_tree (f1) (f2) (l), fold_tree (f1) (f2) (r) )
  }

并且我需要实现一个名为right_most的函数,该函数接受Tree[A]并返回A 这是我的尝试:

def right_most [A](t:Tree[A]) : A =
    fold_tree ((x: A) => x) ((v: (A, A, A)) => v._3) (t)

但是我收到以下错误:

 found   : ((A, A, A)) => A
 required: (A, A, A) => A
    fold_tree ((x: A) => x) ((v: (A, A, A)) => v._3) (t)
                                            ^
one error found

在我看来,找到并要求是相同的。 那是什么错误呢? 此外,我们如何在匿名函数中指定元组类型? 以及为什么需要在函数签名中指定元组类型。 Scala无法推断吗?

Scala编译器可以为您推断很多事情。 所以,这样做

def right_most [A](t:Tree[A]) : A =
    fold_tree[A, A](_) ((_, _, c) => c) (t)

由于使用f3参数(例如三元组(元组)),因此出现编译错误。 相反,您需要这样的函数参数( (a, b, c) => c )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM