快学Scala系列(方法和函数)

昨天是小年,今天是奋斗的一天

方法

        在Java中方法和函数没有特别的区分,方法就是函数,函数就是方法。

        但是在Scala中,方法和函数是有区别的,但是同时方法可以装变成函数。

        函数调用方法。

方法的通式

        def 方法名(参数名:参数类型,参数名:参数类型) ={ }

       Tips:

  1. 参数列表的参数类型不能省略
  2. 返回类型可以省略,Scala编译器会自己推断
  3. 返回值可以不写return。因为后面{}就是前面讲解的块表达式的值。

        通过一个实例来讲解

        上面这个就是一个方法,我们将方法赋值给了一个变量s,输出s。最后的结果是20.

惰性方法

        上次讲了一个惰性的东西,lazy val name = ”tom“。只有在需要name的时候才会进行打印。

        这次讲惰性方法。因为是顺序执行,本来应该执行的这个方法,我们加上lazy之后,这个放不会被执行,而是需要用到他的时候才会执行。

        首先定义一个方法。首先不管是不是惰性,我们看最后一段代码

        print(sum),通过图示我们可以看到,getSum返回的是Int类型

        所以我们打印的sum就是10 + 10 = 20

        但是真正输出的时候并不是这样的,是下面这个样子

        getsum的方法被执行了

        20

        方法参数

        默认参数

                默认参数指的是,我们在方法里面添加了默认的参数。

        直接打印就是 10 + 10

 

        不需要我们去写参数,图中可以看到getSum()方法里面idea就已经提示我们里面有值了

带名参数

        带名参数可以修改默认参数的值

 

        将a的值从10变成1,最后的结果就是11

变长参数

        里面的参数不知道有多少,我们想写多少写多少

 

函数

        Scala中函数是重头戏,因为Scala是函数式变成,在我们之后写Spark的时候会大量用到函数式编程。同时Spark的底层源码就是Scala写的,我们学好了Scala同时也是为我们之后更好的学习Spark打下非常扎实的基础。

函数的语法

        val 函数变量名 = (参数名:参数类型,参数名:参数类型) => 函数体

tips:

  1. 在Scala中,函数是一个对象
  2. 函数也有列表和返回值
  3. 函数不需要def 定义
  4. 不用指定返回值类型
        val getSum = (a:Int,b:Int) => { a + b }

 

        在Scala,函数是对象,而方法属于对象,”方法归属于函数“

方法无法赋值给变量

 

        为什么 val s = add(1,2)可以运行呢?

        很简单,因为add(1,2)返回的是一个值,是我们x+y的值。将3赋值给s

        val d = add不能运行,不能直接赋值给变量,需要将方法和参数一起给d

方法转变成函数

        虽然方法和函数不一样,但是方法可以转变成函数。

        val 变量名 = 方法名 _

        方法名 + 空格 + 下划线

 

下面为了检验我们是否已经学会了方法和函数,将分别用方法和函数来实现九九乘法表

        上面是方法实现的,因为我们用def定义的。

        下面是用函数实现的

        怎么说呢,函数和方法还是挺相似的。

总结:

        方法和函数就到此为止了。

        方法可以转变成函数,但是函数不能转变成方法。

        方法和函数都可以直接运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值