本篇作为scala快速入门系列的第九篇博客,为大家带来关于方法的相关内容。
方法定义
一个类可以有自己的方法,scala中的方法和Java方法类似。但scala与Java定义方法的语法是不一样的。
定义方法
语法
[!NOTE]
- 参数列表的参数类型不能省略
- 返回值类型可以省略,由scala编译器自动推断
- 返回值可以不写return,默认就是{}块表达式的值
示例
- 定义一个方法,实现两个整形数值相加,返回相加后的结果
- 调用该方法
参考代码
返回值类型推断
scala定义方法可以省略返回值,由scala自动推断返回值类型。这样方法定义后更加简洁。
[!DANGER]
- 定义递归方法,不能省略返回值类型
示例
定义递归方法(求阶乘) 10 * 9 * 8 * 7 * 6 * … * 1
参考代码1
参考代码2
方法参数
scala中的方法参数,使用比较灵活。它支持以下几种类型的参数:
- 默认参数
- 带名参数
- 可变参数
默认参数
在定义方法时可以给参数定义一个默认值。
示例
- 定义一个计算两个值相加的方法,这两个值默认为0
- 调用该方法,不传任何参数
参考代码
带名参数
在调用方法的时候,可以指定参数的名称来进行调用。
示例
- 定义一个计算两个值相加的方法,这两个值默认为0
- 调用该方法,只设置第一个参数的值
参考代码
可变参数
如果方法的参数是不固定
的,可以定义一个方法的参数是可变参数。
语法
[!NOTE]
- 在参数类型后面加一个 * 号,表示参数可以是0个或者多个
示例
- 定义一个计算若干个值相加的方法
- 调用方法,传入以下数据:1,2,3,4,5
参考代码
方法调用方式
在scala中,有以下几种方法调用方式,
- 后缀调用法
- 中缀调用法
- 花括号调用法
- 无括号调用法
在后续编写spark,flink程序时,我们会使用到这些方法。
后缀调用法
这种方法与Java没有区别。
语法
示例
使用后缀法Math.abs
求绝对值
参考代码
中缀调用法
语法
例如: 1 to 10
[!TIP]
- 如果有多个参数,使用括号括起来
示例
使用中缀法 Math.abs 求绝对值
操作符即方法
来看一个表达式
大家觉得上面的表达式像不像方法调用?
在scala中, - * / %等这些操作符和Java一样,但在scala中,
- 所有的操作符都是方法
- 操作符是一个方法名字是符号的方法
花括号调用法
语法
[!DANGER]
- 方法只有一个参数,才能使用花括号调用法
示例
使用花括号调用法Math.abs
求绝对值
参考代码
无括号调用法
如果方法没有参数,可以省略方法名后面的括号。
示例
- 定义一个无参数的方法,打印"hello"
- 使用无括号调用法调用该方法
参考代码
本篇博客到这里就结束了,感兴趣的小伙伴们可以持续关注哟~下一篇将为大家带来函数
的相关内容,敬请期待!