函数式编程
来个链接 [ 函数式编程 ]
在函数式编程里面,方法是方法,函数是函数,两者不同。
函数可以作为参数传递给方法 .
package com.msym /** * Created by msym on 2017/7/4. * 函数式编程 */ object Demo { def main(args: Array[String]): Unit = { val res1 = m1(fun1, 10, 20) println(res1) val res2 = m1(fun2, 10, 20) println(res2) } //定义一个方法,接收三个参数:一个函数(仅仅是函数的签名),另外两个是Int类型(函数运行需要的参数) def m1(fun : (Int,Int) => Int, x:Int, y:Int) = { //调用函数 fun(x, y) } //定义一个函数fun1 val fun1 = (x:Int, y:Int) => x + y //定义另个函数fun2 val fun2 =(x:Int, y:Int) => x * y val fun3 = (x:Int) => x }
函数式编程理解例子之一 :
函数代替了 Java 中的匿名类,
scala 中 Array 类的 map()方法, 接收一个函数, 用于对数组内容进行操作 :
package com.msym /** * Created by msym on 2017/7/4. * http://www.cnblogs.com/daimajun/ */ object Demo { def main(args: Array[String]): Unit = { val arr = Array("aaa", "bbb") //原数组 for (x <- arr) println(x)//这里的toUpperCase可以加括号, 也可以不加 val newArr = arr.map(x => x.toUpperCase()) //新数组 for (x <- newArr) println(x) } }打印出:
对于上面的代码, 有一种更变态的方式, map()方法中传递的函数有所不同, 如下:
val newArr = arr.map(_.toUpperCase)这里的下划线 "_" 代表的是每次数组中取出的元素, 然后将其转为大写.