自定义反向功能列表

时间:2018-07-21 03:46:57

标签: scala functional-programming

我是scala的新手,并且希望以功能样式实现通用的反向功能。我想要以下格式的功能

def customReverse[T](list: List[T]) : List[T] ={
// not implemented yet
}

先谢谢了!

2 个答案:

答案 0 :(得分:4)

折叠起来很容易。

def customReverse[T](list: List[T]): List[T] =
  list.foldLeft[List[T]](Nil) { (a, b) => b :: a }

foldLeft在列表中的每对元素之间放置一个二进制运算。因此,如果我们给函数{ (a, b) => b :: a }命名为<>(使用infix名称,则在进行这类归约时,所有内容看起来都会更漂亮),左折看起来像这样(当然,伪代码)

customReverse(List(1, 2, 3))
List(1, 2, 3).foldLeft(Nil)(<>)
(((Nil <> 1) <> 2) <> 3)
((List(1) <> 2) <> 3)
(List(2, 1) <> 3)
List(3, 2, 1)

答案 1 :(得分:0)

您可以尝试以下方法

.app__header { ... }
.app__header__search { ... }
.app__header__search__form { ... }
.app__header__search__form__input { ... }

调用函数def customReverse[T](list: List[T]) : List[T] ={ list match{ case Nil => Nil case x :: xs => customReverse(xs) :+ x } } 时,将获得输出

customReverse(List(1,2,3,4))