函数式编程

来个链接 [ 函数式编程 ]

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

函数可以作为参数传递给方法 .

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

    打印出:

image

对于上面的代码, 有一种更变态的方式, map()方法中传递的函数有所不同, 如下:

val newArr = arr.map(_.toUpperCase)

这里的下划线 "_" 代表的是每次数组中取出的元素, 然后将其转为大写.

转载于:https://www.cnblogs.com/daimajun/p/7226546.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值