函數式編程

來個連接 [ 函數式編程 ]html

在函數式編程裏面,方法是方法,函數是函數,二者不一樣。編程

函數能夠做爲參數傳遞給方法 .數組

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()方法, 接收一個函數, 用於對數組內容進行操做 : spa

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

    打印出:scala

image

對於上面的代碼, 有一種更變態的方式, map()方法中傳遞的函數有所不一樣, 以下:code

val newArr = arr.map(_.toUpperCase)

這裏的下劃線 "_" 表明的是每次數組中取出的元素, 而後將其轉爲大寫. htm

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息