Scala函数

Scala里面定义一个函数:

  def max(x: Int, y: Int): Int = {
    if (x > y)
      return x
    else
      return y
  }

定义一个max函数,处理两个变量,Int类型的x,Int类型的y,返回一个Int类型的值,如果返回空值的话返回类型是Unit

当然为了语法的简洁,Scala可以自动推测return语句,我们的程序完全可以写成这样

  def max(x: Int, y: Int): Int = {
    if (x > y) x
    else y
  }

  //像变量一样,也可以自动推测返回类型,所以函数可以写成

  def max(x: Int, y: Int) = {
    if (x > y) x
    else y
  }

事实上Scala根本就不推荐写return...

其实如果仔细的看Scala定义函数的形式,会发现在Scala中定义函数的形式和定义一个变量是一样的

val max:Int = 1; //变量


def max(x: Int, y: Int): Int = { } // 函数

 由于Scala的语法非常的灵活,在使用的时候,完全可以认为函数也是一种特殊的变量,和变量一样使用。

比如定义一个函数,我们可以像变量一样定义一个函数,并且使用它


val plus=(x:Int,y:Int)=>x+y

println(plus(3, 4))

//输出结果7

这其实就涉及到函数式编程的一个概念:函数是一等的值。

函数值的地位和整数、字符串是完全相同的,比如说我们就可以构造一个函数,它可以接受一个是函数的参数,在这个函数里我们可以直接使用这个函数。

比如把函数当成参数传进去:

//定义一个compare函数,接受x,y和一个函数func

def compare(x: Int, y: Int, func:(Int, Int)=>Int)={

              func(x,y)
}

//当我们想求最大值的时候

compare(x,y,max)

//当我们求最小值的时候,可以这样写

compare(x,y,min)

类似于策略模式,通过我们传进去的函数来改变compare函数的行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值