关于函数的几个关键点
1.函数是用def定义的
2.函数会自动进行类型的推断来确定返回值,但是如果没有等于号,则推断失效
3.函数的参数可以是函数,因为在scala中函数是对象
4.如果在函数中无法推导出返回值类型,则需声明具体类型
5.函数参数的顺序可以改变,只需要使用参数名
object scala_function {
def main(args: Array[String]): Unit = {
println(sayHello("xiaoming",23))
println(sayHello2("xiaoming",23))
println("fibonacci(10)的值为: "+fibonacci(10))
sayHello2(age=13,name="xiaohua")
sayHello3(name="xiaohua")
println(sum (0 to 10: _*))
println("---")
println(sumrecursive(0 to 10: _*))
}
def sayHello(name:String,age:Int)={//返回值为Unit,根据最后一行推断
println("hello my name is "+name)
println("hello my age is "+age)//println返回值Unit
}
def sayHello2(name:String,age:Int)={//返回值为Int,根据最后一行推断
println("hello my name is "+name)
println("hello my age is "+age)
age
}
def sayHello3(name:String,age:Int=20)={//返回值为Int,根据最后一行推断,并且具有参数默认值age=20
println("hello my name is "+name)
println("hello my age is "+age)
age
}
def sum (nums: Int*){
var result=0;
for(num <- nums) result+=num
result
}
def sumrecursive(nums:Int*):Int={
if(0==nums.length) 0
else nums.head+sumrecursive(nums.tail: _*)
}
//定义函数
//F(n)=F(n-1)+F(n-2)显然这是一个线性递推数列。
def fibonacci(n:Int):Int = {//很恐怖的裂变
if(n<=1) 1
else fibonacci(n-2)+fibonacci(n-1)
}
}