簡體   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