val myNumFunc:Int=>Int=(num:Int)=>num*2
println(myNumFunc(3))val myNumFunc=(num:Int)=>num*2//自动推断类型
println(myNumFunc(3))val myNumFunc=(num)=>num*2//报错val myNumFunc:Int=>Int=(num)=>num*2
当函数参数在函数字面量中只出现一次时,可以用_代替
val counter=(_:Int)+1//有类型时括号不能省略,等效于x:Int=>x+1val add=(_:Int)+(_:Int)//等效于(a:Int,b:Int)=>a+bval m1=List(1,2,3)val m2=m1.map(_*2)//map接受一个函数作为参数,相当于m1.map(x=>x*2)
val list=List(1,2,3)val f=(i:Int)=>println(i)
list.foreach(f)//遍历集合val university=Map("XMU"->"Xiamen University","THU"->"Tsinghua University","PKU"->"Peking University")
university foreach {kv=>println(kv._1+":"+kv._2)}//遍历映射,kv是元组对象
university foreach {x=>x match{case(k,v)=>println(k+":"+v)}}//通过元组对象的unapply方法遍历,(k,v),元组对象定义时不需要加类名
university foreach {case(k,v)=>println(k+":"+v)}//不需要加match
映射
map:一对一映射
flatMap:一对多
val books=List("Hadoop","Hive","HDFS")
books.map(s=>s.toUpperCase)//toUpperCase方法将一个字符串中的每个字母都变成大写
books.map(s=>s.length)//将字符串映射到它的长度
books flatMap (s=>s.toList)//每个元素转成一个列表,在合并成一个总列表,List[Char]=List(H,a,d,o,o,p,H,i,v,e,H,D,F,S)