[英]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.