Scala中方法和函数的区别

Scala 中方法和函数有自己的定义,不像java中那样就方法就是函数

    方法和函数是scala比较重要的一点,如何能够快速理解呢,下面是我的分享:
  1. 定义方法:
    方法关键字,方法名,方法参数,返回值类型,最后一个是方法体
    def m1(x:Int):Int = {X*X}
    这是方法的定义
    下面是在编译器中的代码:
scala> def sayHello =println("hello")
sayHello: Unit
scala> sayHello
hello
//方式一:方法时可以没有参数的,但是如果你方法名后面没有写()小括号,这时你如果加上小括号,会报错  例如:
scala> sayHello()
<console>:9: error: Unit does not take parameters
              sayHello()

//方式二:在方法名后面加上() 这样可以直接使用方法名  或者使用 方法名()  小括号   
scala> def sayHello() =println("hi")
sayHello: ()Unit
scala> sayHello()
hi
scala> sayHello
hi
//有一个小的区别是如果你定义的时候没有加括号,调用加括号会报错
//定义加括号,调用可加可不加括号

2,定义函数:
函数是头等公民
Val f1 =(参数名:参数类型)=>{函数体}
函数分为匿名函数和非匿名函数
下面是定义函数的截图:
在这里插入图片描述 方法和函数 符号不一样, 方法时 = 函数是=>
函数的第二种方式:在这里插入图片描述

方法也可以直接转成函数:

scala> sayHello _
res207: () => Unit = <function0>
//这就成了函数了,可以使用函数来调用,函数和方法调用一样

3,两种方式定义
传值调用和传名调用
函数的参数是传值参数, 也就是说,参数的值在传递给函数之前确定
其实,在scala中,我们的方法或者函数的参数可以是一个表达式,也就是将一个代码逻辑传递给某个方法或者函数。
代码部分截图:
传名调用:
指的是函数:隐式的转换
将shuqian方法名称传递到方法的内部执行
在这里插入图片描述
这是结果:
在这里插入图片描述

object Calculate {
      def add(a:Int,b:Int)={
        a+b
      }
    //拥有三个参数 第一个是个函数,第二个第三个是Int参数
     //第一个参数是:拥有2个Int类型参数,返回值是Int类型的函数
     def add2(f:(Int,Int)=>Int,a:Int,b:Int)={
       f(a,b)   //f(1,2)=>a + b
     }
     def add3(a:Int=>Int,b:Int): Unit ={
         a(b)+b
     }
      val f1 =(x:Int)=>x*10
      val fxx=(a:Int,b:Int)=>a+b
      def main(args: Array[String]): Unit = {
      val r1=add(1,2+2)
      add3(f1,6)
      println(r1)

      println(add2(fxx, 1, 2))

  }
}

传值调用:
printByValue 参数为一个具体的数值
截图:
在这里插入图片描述
这些在平常的scala中比较常见的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值