标签:
等同于Array(1,2,3,4).map{(x:Int)=>x+3}
等同于Array(1,2,3,4) map {(x:Int)=>x+3def f1(f : (Int)=>Int) = f(-5)
def f1(f : Int) = (x:Int)=>(x+3) * f
xx.addActionListener(new ActionListener(){
....
});
def f(x:Int)(y:Int) = x*y
常见的高阶函数
如(1 to 5).map(1 + _)
如(1 to 5).foreach(println)
如(1 to 5).filter(_%2==0)
如(1 to 5).reduce(_*_)
集合
1 object Test7 extends App{ 2 3 //高阶函数 4 def f(i:Int)=i+3; 5 //将f赋给V 6 var v=f _ 7 println(v(33))//调用v就相当于调用f 8 9 10 //将1到4作用于V 并返回给map, 把变量当作参数传递 11 println((1 to 4).map(v))//Vector(4, 5, 6, 7) 12 13 14 15 //匿名高阶函数 16 //def f(i:Int)=i+3; 17 //这就是匿名函数 18 var p=(i:Int) => i+3; 19 20 println((1 to 4).map(p)) 21 22 //Array(1,2,3,4).map((x:Int)=>x+3) 23 //等同于Array(1,2,3,4).map{(x:Int)=>x+3} 24 //等同于Array(1,2,3,4) map {(x:Int)=>x+3} 25 26 //函数的参数含有匿名函数 () = > v 27 //代表 i 现在就是一个函数 i的类型为匿名函数, 28 def g(i:(Int) => Int )=i(3); 29 var h=g _ 30 var s=(i:Int) =>i+3; 31 //运行过程 在传人您名函数之前i(3) i已经变为3 此时 3+3=6 32 println(h(s)) 33 34 35 //函数体含有匿名函数 36 37 //f1这个函数有两个未知参数 38 //=> 右边的值带等号和不带等号的区别 带等号表示( x+3)是函数的执行体,不带表示右边都是函数的执行体 39 40 def f1(f:Int)=(x:Int) =>( x+3) *f 41 42 //科里化函数写法 43 def f2(f:Int)(x:Int)=(x+3)*f 44 45 46 47 // f1(2) 此时返回的是一个函数 <function1> 相当于 (i:Int) => (i+3)*2 48 49 var ff=f1(2); 50 51 //这样就会把值传给匿名函数 52 println(ff(3));//12 53 54 //也可以这样传参 f1(2)(3) 55 56 57 //常见高阶函数 58 // _代表每一个元素 59 (1 to 5 ).map(1+ _);// 2,3,4,5,6 60 (1 to 5).reduce(_*_)// 1*2*3*4*5 61 (1 to 5).reduce(_*_)//1+....+5 62 63 64 65 66 67 }
标签:
原文地址:http://www.cnblogs.com/thinkpad/p/4694599.html