Scala方法和函数

Scala有方法与函数,方法是类的一部分,函数是一个对象可以复制给一个变量,即类中定义的方法就是函数

Scala中的方法跟Java的类似,方法是组成类的一部分

Scala中的函数是一个完整的对象,继承了Trait的类的对象

Scala中使用val语句可以定义函数,def语句定义方法

方法声明

Scala方法声明格式:

def functionName ([参数列表]) : [return type]

如果你不写等于号和方法主体,那么方法会被隐式声明为抽象(abstract),包含它的类型于是也是一个抽象类型。

方法定义

方法定义由一个 def 关键字开始,紧接着是可选的参数列表,一个冒号 : 和方法的返回类型,一个等于号 = ,最后是方法的主体。

 

代码中 return type 可以是任意合法的 Scala 数据类型。参数列表中的参数可以使用逗号分隔。

Scala 方法定义格式如下:

def functionName ([参数列表]) : [return type] = {
   function body
   return [expr]
}

以下方法的功能是将两个传入的参数相加并求和:(基本语句)

object Add {
  def addInt(a: Int, b: Int): Int = {
      var sum: Int = 0
      sum = a + b
      return sum
    }
  }

求和实例:

object Test1{
   def main(args: Array[String]): Unit = {
     println("Returned Value :" + addInt(5,7))
   }
   def addInt(a:Int,b:Int) :Int = {
     var sum:Int = 0
     sum = a + b
     return sum
   }
 }

运行结果:

1

方法和函数的区别:

打开cmd,依次输入以下命令:

def m2(f:(Int,Int) => Int) = f(2,6)
val f2 = (x: Int,y:Int) => x-y
m2(f2)

结果:

1

object MethodAndFunctionDemo{
  //定义一个方法m1
  //方法m1 参数要求是一个函数,函数的参数必须是两个 int类型
  //返回值类型也是Int类型
  def m1(f:(Int,Int) =>Int) :Int = {
    f(2,6)
  }
  //定义一个函数f1 参数是两个Int类型,返回值也是Int类型
  val f1 = (x:Int,y:Int) => x+y
  //定义一个函数f2
  val f2 =(m:Int,n:Int) => m*n

  def main(args: Array[String]): Unit = {
    //调用m1方法,并传入f1函数
    var r1 = m1(f1)
    println(r1)
    //调用m1方法,并传入f2函数
    var r2 = m1(f2)
    println(r2)
  }
}

运行结果:

1

2、在Scala中无法直接操作方法,如果要操作方法,必须先将其转换成函数。有两种方法可以将方法转换成函数:

val f1 = m _

在方法名称m后面紧跟一个空格和下划线告诉编译器将方法m转换成函数,而不是要调用这个方法。 也可以显示地告诉编译器需要将方法转换成函数:

val f1: (Int) => Int = m

 例如:

1

 Idea:

object TestMap{
  def haha(f:Int => Int):Unit = {
    val r = f(10)
    println(r)
  }
  val f0 = (x:Int) => x*x
  //定义一个方法
  def m0(x:Int) :Int = {
    //传递进来的参数乘以10
    x*10
  }
  //将方法转换成函数,利用了神奇的下滑线
  var f1 = m0 _

  def main(args: Array[String]): Unit = {
    //通过m0 _将方法转化成函数
    haha(m0 _);
    //如果直接传递的是方法名称,scala相当于是把方法转成了函数
    haha(m0)
    //通过x => m0(x)的方式将方法转化成函数,这个函数是一个匿名函数,等价:(x:Int) => m0(x)
haha(x => m0(x))
  }
}

运行结果:

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值