我编写了自己的 a 递归定义,foldLeft
我想将它与这个函数一起使用,该函数joinTerminateLeft
接受一个字符串列表和一个终止符,并创建一个新字符串,这些字符串全部由终止符分隔。
例如List("a", "b", "c", "d")
,终结者;
最终会成为a;b;c;d;
这是我的foldLeft
,我认为这很好,但terminateLeft
由于某种奇怪的原因我的不起作用,知道吗?
def foldLeft [A,B] (xs:List[A], e:B, f:(B,A)=>B) : B = {
def auxFoldLeft(xs: List[A], e: B) : B = {
xs match {
case Nil => e
case x::xs => auxFoldLeft(xs, f(e, x))
}
}
auxFoldLeft(xs, e)
}
def joinTerminateLeft (xs : List[String], term : String) : String = {
def f(s: String, s2: String) : String = s + s2
xs match {
case Nil => ""
case x::xs => x + foldLeft(xs, term, f)
}
}
当我joinTerminateLeft
使用 a,b,c,d 运行时,由于某种原因它在 B 之后停止并输出字符串 c,d 但不使用终止符。