scala学习(五)—函数

1.函数

  • 闭包(一个返回值依赖于外部变量的函数,在函数执行时暂时处于一个封闭状态)
//函数的变量只有i,返回值需要捕获函数外部的自由变量factor
val factor = 3
val multiplier = (i:Int) => i * factor
  • 柯里化(原来接受两个或多个参数的函数,改为先接受一个参数并返回一个新的函数,新的再接受第二个参数返回最终结果)
//一般写法,同时接收两个参数
def add_1(x: Int, y: Int) = x + y
//先接收x参数,返回一个匿名函数(y: Int) => x + y,再接收一个y参数,返回x+y
def add_2(x: Int) = (y: Int) => x + y
//等价上面的写法
def add_3(x: Int)(y: Int) = x + y

2.定义函数

// 参数带默认值的函数
def show(name: String = "酒剑仙", addr: String = "西安"): Unit = println(s"name=$name, addr=$addr")
//不定长参数的函数
def sumInts(number: Int *): Int = number.sum
//值函数
val factorial: Seq[Int] => Int = (seq: Seq[Int]) => seq.product

3.高阶函数

val seq = Range(1, 10)

// 转换操作,比那里每个元素进行相应操作病返回新的序列
val seq1 = seq.map(_ * 2)
//排序
val sortSeq = seq.sortWith(_ > _)
//聚合
val sum = seq.reduce(_ + _)
//折叠函数
val sum2 = seq.fold(0)(_+_)
// 遍历但没有返回值
seq.foreach(println)

4.偏函数

  • 偏函数: PartialFunction[A, B],即只作用于部分值的函数
    • A: 输入类型
    • B: 返回类型
  • 定义偏函数
val list = List(-1, 2, 3, 0 ,-9)
//定义偏函数
def partialFun: PartialFunction[Int,Int] = {
case i:Int if i > 0 => i
case j:Int if j <= 0 => -j
}
//使用
list.collect(partialFun)
//直接定义匿名偏函数
list.collect{case i if i > 0 => i}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值