Scala之函数简介
1.内嵌函数:
- 1)在函数内部再定义一个函数
- 2)实现阶乘函数,源码如下:
object Test {
def main(args: Array[String]) {
println( factorial(1) );//直接对返回的值输出
println( factorial(2) )
println( factorial(3) )
}
def factorial(i: Int): Int = {
def fact(i: Int, accumulator: Int): Int = {//在函数内部再定义一个函数 [但是执行却是要到后面的语句fact(i,1)]
if (i <= 1)
accumulator;**//相当于return accumulator**
else
fact(i - 1, i * accumulator)
}
fact(i, 1);//关键的执行语句。
}
}
2.偏应用函数:
- 1)有时候在调用函数的时候,有些参数是不变的,变化的参数只有很少的一部分,这个时候就可以使用偏应用函数,从而减少代码量的编写。
- 2)源码如下:
import java.util.Date//导入java中的包
object Test{
def main (args :Array[String]): Unit ={
val date = new Date();
val heartBind = loverDay("liuting",date,_:String);
/*1.新建一个函数的索引
*2.使用偏应用函数,从而减少参数的使用
*/
heartBind("I love you");
heartBind("what are you doing now?");
}
def loverDay(name:String,date:Date,message:String): Unit={
println("Today is :"+date);
println("This is my truth: "+message);
}
}
3.匿名函数:
- 1)Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体。使用匿名函数后,我们的代码变得更简洁了。
- 2)源码如下:
object Test{
def main(args:Array[String]): Unit ={
val addInt = (a:Int,b:Int) => { a + b;};
//为何不能是return a+b;?
//这里var addInt与val addInt又有什么区别?
println("sum is " + addInt(1,2));
}
}