文章目录
1.方法的定义
语法
def methodName (参数名:参数类型, 参数名:参数类型) : [return type] = {
// 方法体:一系列的代码
}
注意项
- 参数列表的参数类型不能省略
- 返回值类型可以省略,由scala编译器自动推断
- 返回值可以不写return,默认就是{}块表达式的值
代码示例
//定义一个方法,实现两个整形数值相加,返回相加后的结果
//方式一
def add(a:Int,b:Int) : Int = {a + b}
//省略返回值的写法
def add(a:Int,b:Int)= {a + b}
//其它写法
def add(a:Int,b:Int) = a + b
//调用
add(1,2)
注意
定义递归方法时,不能省略返回值类型
代码示例
//定义递归方法(求阶乘)
//没有返回值写法 报错
def m2(x:Int) = {
if(x<=1) 1
else m2(x-1) * x
}
//有返回值写法,方法定义正确
def m2(x:Int):Int = { | if(x<=1) 1 | else m2(x-1) * x | }
2.方法参数
类型
- 默认参数
- 带名参数
- 变长参数
默认参数
在定义方法时可以给参数定义一个默认值。
代码示例
// x,y的默认值为0
//定义方法求两个数相加的值, 并且参数的的默认值为0
def add(x:Int = 0, y:Int = 0) = x + y
//调用
add();
带名参数
在调用方法时,可以指定参数的名称来进行调用。
代码示例
def add(x:Int = 0, y:Int = 0) = x + y
add(x=1)
变长参数
如果方法的参数是不固定的,可以定义一个方法的参数是变长参数。
语法格式
//在参数类型后面加一个`*`号,表示参数可以是0个或者多个
def 方法名(参数名:参数类型*):返回值类型 = {
方法体
}
代码示例
//1. 定义一个计算若干个值相加的方法
//2. 调用方法,传入以下数据:1,2,3,4,5
// sum 求和
def add(num:Int*) = num.sum
//调用
add(1,2,3,4,5)
扫描二维码关注公众号,回复:
8779075 查看本文章
3.方法的调用
调用方式
- 后缀调用法
- 中缀调用法
- 花括号调用法
- 无括号调用法
后缀调用法
语法格式
对象名.方法名(参数)
代码示例
Math.abs(-1)
中缀调用法
语法
对象名 方法名 参数
注意:如果有多个参数,使用括号括起来
代码示例
Math abs -1
操作符即方法
代码示例
1 + 1
说明
在scala中,+ - * / %等这些操作符和Java一样,但在scala中
所有的操作符都是方法
操作符是一个方法名字是符号的方法
花括号调用法
语法
注意:方法只有一个参数,才能使用花括号调用法
Math.abs{
// 表达式1
// 表达式2
}
代码示例
Math.abs{-10}
无括号调用法
如果方法没有参数,可以省略方法名后面的括号
代码示例
def m3()=println("hello")
m3