scala-2(函数)

普通函数

基本语法

def 函数名(参数列表):返回值类型={
	方法体
}

返回值类型可以不写,使用类型推断,方法体中可执行的最后一行的类型会被自动作为返回值类型

当注明了返回值类型,函数最后一行就必须是对应类型的数值

无返回值使用Unit

案例:输入若干整型数值,求最大值

/*
1、要求至少传入两个数值才可以比较大小,所以预定义两个确定的形参,剩余部分使用可变参数接收
2、当可变参数个数为0时,对其求最大值会出现空集异常,所以需要判断集合大小
*/
def getMax(n1: Int, n2: Int, others: Int*): Int = {
  var otherMax = Int.MinValue
  if (others.length != 0) {
    otherMax = others.reduce((n1, n2) => if (n1 > n2) n1 else n2)
  }
  if (n1 > n2 && n1 > otherMax) n1 else if (n2 > otherMax) n2 else otherMax
}

println(getMax(1, 2))
println(getMax(1, 2, 0))
println(getMax(1, 2, 3, 6))

高阶函数

在scala中,函数是可以被赋值给一个变量的,同时也可以作为另一个函数的参数,这种需要接收一个函数作为参数的函数叫做高阶函数

函数类型声明方式:(参数一数据类型,参数二数据类型,......)=>返回值类型
这里的返回值类型也可以是函数

例如:val fun: (String, Int) => String = (str: String, n: Int) => str * n

案例:传入一个字符串,将字符串的每个字符对照ASCII码转换为数字,再将数字拼接起来

def funTest(f: (String, String) => String, mes: String): String = {
  mes.map(_.toInt.toString).reduce(f)
}
println(funTest(_ + _, "Aa"))

同时,函数也可以作为另一个函数的返回值

需求:函数传入一个偶数时,返回一个两数相加求和的函数,传入一个奇数时,返回一个两数相减求差的函数

def cal(n: Int): (Int, Int) => Int = {
  if (n % 2 == 0) _ + _ else _ - _
}

println(cal(9)(5, 3))
println(cal(14)(2, 5))

这里的cal(9)返回了一个两数求差的函数,cal(9)(5,3)相当于将5,3作为参数传入了一个两数求差的函数中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值