forall 对集合中的元素进行某个判断,全部为true则返回true,反之返回false. 例如: scala> var s = List("hello", "world") s: List[String] = List(hello, world) scala> s.forall( f => f.contains("h") ) res34: Boolean = false scala> s.forall( f =>…
sorted函数.filter函数和map函数的区别1.作用 前者用于排序, 中者用于筛选, 后者用于返回值(不是特定的筛选或者排序)2.写法 前者 sorted(iterable,key=自定义函数名字或者匿名函数,reverse=False) 返回的是iterable 中者 filter(func(自定义函数名字或者匿名函数),iterable) 返回的是iterator(迭代器) 通过list(迭代器)转换成列表(iterable) 前者 map(func(自定义函数名字或者匿名函数),i…
Scala中的集合对象都有foreach和map两个方法.两个方法的共同点在于:都是用于遍历集合对象,并对每一项执行指定的方法.而两者的差异在于:foreach无返回值(准确说返回void),map返回集合对象.见如下代码及运行结果:b.getClass 得到的是void, 而c.getClass得到的是colletion .再看代码的第9-11行,foreach和map的运行结果一致.结论就是:foreach 无法代替map. 而map方法却可以代替foreach. 问题:为什么scala提供…
构造器 在定义类时可以定义主构造器.主构造器可以同时声明字段. /** * 主构造器 * @author Administrator */ //在scala中,类和方法交织在一起 class TestClass51(val name:String = "" ,val age:Int = 0){ println("name="+ name + " age=" + age) } object TestScala51 { def main(args:…
Scala中有PartialFunction的概念, 同时还要一个概念叫Partial Applied Function. 前者译作偏函数, 后者译作"偏应用函数"或"部分应用函数", 一字之差, 差距很大. 首先偏函数是个数学概念, 偏函数不是"函数"的一种, 而是一个跟函数平行的概念. Scala可以通过模式匹配来定义偏函数, 下面这两种方式定义的函数, 都可以认为是偏函数, 因为他们都只对其定义域Int的部分值做了处理. 那么像p1哪有定义…
一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组   1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[String](“s1”,”s2”,”s3”) /** * 创建数组两种方式: * 1.new Array[String](3) * 2.直接Array */ //创建类型为Int 长度为3的数组 val arr1 = new Array[Int](3) //创建String 类型的数组,直接赋值…
今天我们来学习一下如何使用for表达式实现map.flatMap以及filter 首先,我们来看下map.map的功能是,传入一个list,通过一个函数f,将list中的元素A变成元素B的过程.最后得到由B形成的列表.这个过程如果由for循环实现的话,如下操作: for(element <- list) yield f(element) 接下来我们看下flatMap.flatMap的功能是,传入一个list,通过一个函数f,将list中的每个元素转换成一个列表,最后返回由这些列表中的所有元素构成…
def even(num): if num%2==0: return True return False lis = [1,2,3,4,5,6,7,8,9] res = filter(even,lis) print('filter..',list(res)) #filter只保留,返回为真的数据,过滤list的作用 res2 = map(even,lis) print('map..',list(res2)) #map是帮你循环调用函数,这个函数返回就保存什么. filter.. [2, 4, 6…
本文主要讨论java.util.Timer的schedule(timerTask,delay,period)和scheduleAtFixedRate(timerTask,delay,period)的区别. 这两个函数不管是哪一个,TImer都是单线程的,任务始终在这个单线程里面执行. 下面讨论四种情况: [(任务3s,间隔2s)+(任务2s,间隔3s)]×[schedule+scheduleAtFixedRate] schedule,任务3s,间隔2s new Timer().schedule(…
call by value:会先计算参数的值,然后再传递给被调用的函数 call by name:参数会到实际使用的时候才计算 定义方法 def return1():Int = { println("calling...") 1 } def callByValue(x: Int) = { println("x1=" + x) println("x2=" + x) } def callByName(x: =>Int) = { println(…