函数式编程

来个链接 [ Java,函数式编程
]

在函数式编程里面,方法是措施,函数是函数,两者不同。

函数可以视作参数传递给艺术 .

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)
  }
}

    打印出:

Java 1

对于地方的代码, 有一种更变态的章程, map()方法中传送的函数有所不同,
如下:

val newArr = arr.map(_.toUpperCase)

那边的下划线 “_” 代表的是历次数组中取出的元素, 然后将其转为大写.

相关文章