scala函数

来源:互联网 发布:网络架空防静电地板 编辑:程序博客网 时间:2024/05/17 22:02

关于函数的几个关键点
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=20println("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) 0else nums.head+sumrecursive(nums.tail: _*)}//定义函数//F(n)=F(n-1)+F(n-2)显然这是一个线性递推数列。def fibonacci(n:Int):Int = {//很恐怖的裂变if(n<=1) 1else fibonacci(n-2)+fibonacci(n-1)}}