Scala的方法和函数的定义及区别

方法

语法

在这里插入图片描述

scala> def m1(a:Int,b:Int):Int = {
     |     a + b
     | }
m1: (a: Int, b: Int)Int
规则:
  • 方法定义的关键字为def
  • 如果方法体只有一行,{}可以省略
  • 没有return关键字,使用方法体的最后一行【值或者表达式】作为返回值
  • 大多数情况下返回值类型也可以自动推断,可以不写,递归方法除外

举例

定义一个方法,实现传递两个Int参数,返回两个数值之和

scala> def m2(a:Int,b:Int):Int = a + b
m2: (a: Int, b: Int)Int

scala> m2(2,3)
res9: Int = 5

scala> def m3(a:Int,b:Int) = a + b
m3: (a: Int, b: Int)Int

scala> m3(3,3)
res10: Int = 6

方法参数的使用

默认参数的方法调用

scala> def m5(a:Int = 0,b:Int = 2) = a + b
m5: (a: Int, b: Int)Int

scala> m5(1,1)
res15: Int = 2

scala> m5(1,6)				--指定所有参数
res16: Int = 7

scala> m5()					--使用两个参数的默认值
res17: Int = 2

scala> m5(1)				--给第一个参数赋值,第二个参数使用默认值
res18: Int = 3

scala> m5(a=1)
res19: Int = 3

scala> m5(b=1)
res20: Int = 1

scala> m5(b=4,a=3)			--指定参数赋值
res21: Int = 7

变长参数的方法定义

scala> def m6(x:Int *) = x.sum
m6: (x: Int*)Int

scala> m6(1)
res22: Int = 1

scala> m6(1,2)
res23: Int = 3

scala> m6(1,2,4)
res24: Int = 7

函数

语法

(参数) => {
//函数体
}

规则:
  • 函数通过=>进行标记:用于区分方法【def】和函数
  • 如果函数体只有一行,可以省略{}
  • 没有return关键字,使用函数体的最后一行作为返回值

函数的本质

  • Scala中函数的本质就是对象,每个函数就是一个FunctionN类的实例,N表示参数个数
  • 调用函数的本质是调用了这个对象的方法实现的
  • 所以要定义、调用函数,必须指定参数列表,不然只是定义或者调用了这个对象,而不是这个对象的方法

举例

scala> (x:Int,y:Int) => { x + y }
res32: (Int, Int) => Int = <function2>

scala> val str1 = "itcast"
str1:   String           = itcast

方法转换成函数

语法

val 函数名 = 方法名 _

举例

scala> def m2(a:Int,b:Int) = a + b
m2: (a: Int, b: Int)Int

scala> val f1 = m2 _
f1: (Int, Int) => Int = <function2>

方法与函数的区别

  • 方法:由方法名、参数、方法体构成,一般指的是类中定义的函数即为方法

  • 函数:由函数名、参数、函数体构成,一般指的是可以独立构建的称为函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值