一、scala中的方法
1.Scala中方法的格式
def 方法名(参数名:参数类型,参数名:参数类型):[return type]={//方法体}
省略条件:
1.参数列表的参数类型不能省略 2.参数值类型可以省略,由scala编译器自动推断 3.返回值可以不写return,默认就是{}块表达式的值 4.定义递归方法,不能省略返回值类型
如:获取最大值
//定义方法defgetMaxNum(a:Int, b:Int):Int= { returnif(a>b) aelseb} //调用方法valmaxNum=getMaxNum(20, 40) //打印结果printIn("maxNum: "+maxNum)
根据上面的省略条件2可以进行省略:
//定义方法defgetMaxNum(a:Int, b:Int) =if(a>b) aelseb//调用方法valmaxNum=getMaxNum(20, 40) //打印结果printIn("maxNum: "+maxNum)
2.使用惰性方法
当记录方法返回值的变量被声明为lazy时,方法的执行将被推迟,直到我们首次使用该值时,方法才会执行。类似java中的延迟加载。同时lazy不能修饰var类型的变量。
例如想延迟调用则
//定义方法defgetSum(a:Int, b:Int)=a+b//使用惰性方法lazyvalsum=getSum(1,2); //调用是才会加载getSum()方法printIn("sum: "+sum)
3.Scala中的方法参数
默认参数、带名参数、变长参数
默认参数:
//定义方法,同时带默认值defgetSum(x:Int=10 , y:Int=20) =x+y//通过该默认参数的形式调用该方法valsum=getSum() //打印结果print("sum: "+sum) //30
带名参数
//定义方法,同时带默认值defgetSum(x:Int=10 , y:Int) =x+y//通过该默认参数的形式调用该方法valsum=getSum(y=10) //打印结果print("sum: "+sum) //20
变长参数
def 方法名(参数名:参数类型*):返回值类型 = { //方法体 }
例如:
//定义方法defgetSum(a:Int*)=a.sum//调用方法valsum=getSum(3,4,5,6,7) //打印结果printIn("sum: "+sum) //25
二、函数
定义函数
val 函数变量名 = (参数名:参数类型,参数名:参数类型) =>函数体
使用函数
//定义函数valgetSum= (x:Int,y:Int) =>x+y//调用函数valresult=getSum(20,30) //打印结果printIn("result: "+result) //50
Scala中的方法与函数:
方法是属于类或者对象的,在运行时,它是加载到JVM的方法区中,而函数则是加载到JVM的堆内存中,同时可以将函数对象赋值给一个变量。函数是一个对象,继承自FunctionN,函数对象有apply、curried、toSting、tupled这些方法,而方法则没有。这是scala与java不同的地方。
将方法转换成函数的方式
val 变量名 = 方法名 _ //格式为: 方法名 + 空格 + 下划线
例如:
//定义方法defadd(x:Int, y:Int) =x+y//将方法换成函数vala=add_//调用函数valresult=a(10,30) //打印结果printIn("result: "+result) //40
关于for循环写法
for(i <- 1 to n) 等价于 for(int i = 1, i <= n, n++)
进行插值打印方式
//打印参数j*i= (j*i的积),如3*5=15print(s"${j}*${i}=${j*i})