DropWhile

object DropWhile {

  def dropWhile[A](l: List[A], f: A => Boolean): List[A] = l match {
    case Nil    => Nil
    case h :: t => if (f(h)) dropWhile(t, f) else h :: t
  }

  def main(args: Array[String]): Unit = {
    println(dropWhile(Nil, (a: Int) => a < 0))
    println(dropWhile(List(-1, -3, -2, 3, 4, 5, 6), (a: Int) => a < 0))
  }
}
List()
List(3, 4, 5, 6)
时间: 2024-08-25 06:56:19

DropWhile的相关文章

Can you share some Scala List class examples?

Scala List FAQ: Can you share some Scala List class examples? The Scala List class may be the most commonly used data structure in Scala applications. Therefore, it's very helpful to know how create lists, merge lists, select items from lists, operat

lodash用法系列(5),链式

Lodash用来操作对象和集合,比Underscore拥有更多的功能和更好的性能. 官网:https://lodash.com/引用:<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>安装:npm install lodash 首先通过npm安装lodash:npm i --save lodash 在js文件中引用lodash:var _ =

泛函编程(6)-数据结构-List基础

List是一种最普通的泛函数据结构,比较直观,有良好的示范基础.List就像一个管子,里面可以装载一长条任何类型的东西.如需要对管子里的东西进行处理,则必须在管子内按直线顺序一个一个的来,这符合泛函编程的风格.与其它的泛函数据结构设计思路一样,设计List时先考虑List的两种状态:空或不为空两种类型.这两种类型可以用case class 来表现: 1 trait List[+A] {} 2 case class Cons[+A](head: A, tail: List[A]) extends

Python:itertools模块

itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. chain(iter1, iter2, ..., iterN): 给出一组迭代器(iter1, iter2, ..., iterN),此函数创建一个新迭代器来将所有的迭代器链接起来,返回的迭代器从iter1开始生成项,知道iter1被用完,然后从iter2生成项,这一过程会持续到iterN中所有的项都被

lodash源码学习(1)

前端开发这个行业这几年发展速度太快,各种新技术不断更新,从es5到es6再到es7,从grunt,browserify到webpack,gulp,rollup,还有什么postcss,typescript,flow...,一直都在学习新技术,作为一个才工作不久的新人,感觉内心有点浮躁了,想巩固一下基础,之前听别人说lodash的源码很不错,所以学习学习.我不是什么大牛,如果有什么分析得不对的,大家请务必要原谅我....话不多说,lodash版本4.17.4,开始!. 1.“Array” Meth

Python标准库13 循环器 (itertools)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的容器,包含有多个对象.通过调用循环器的next()方法 (__next__()方法,在Python 3.x中),循环器将依次返回一个对象.直到所有的对象遍历穷尽,循环器将举出StopIteration错误. 在for i in iterator结构中,循环器每次返回的对象将赋予给i,直到循环结束.使

itertools模块

itertools模块概览 +生成无限迭代器 count(start, [step]) #从start开始,步长为step的无限整数迭代器(step默认值为1) cycle(iterable) #不断循环iterable而得到的无限迭代器 repeat(object, [n]) #重复object对象n次生成的迭代器 (n默认值为无穷大) +处理输入序列得到新的迭代器 chain(*iterables)             #将多个序列串联 compress(data, selectors)

Python3之itertools模块

Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 1.Infinite Iterators Iterator Arguments Results Example count() start, [step] start, start+step, start+2*step, ... count(10) --> 10 11 12 13 14 ... cycle() p p0, p1, ... plast, p0, p1, ... cycle('ABCD') --> A

函数式Android编程(II):Kotlin语言的集合操作

原文标题:Functional Android (II): Collection operations in Kotlin 原文链接:http://antonioleiva.com/collection-operations-kotlin/ 原文作者:Antonio Leiva(http://antonioleiva.com/about/) 原文发布:2015-09-29 在简化代码方面,Lambda表达式是一个杰出的工具,而且还可以完成之前不可能完成的事.我们在这个系列文章的第一篇(Unlea