Scala函数式编程(一)

来源:互联网 发布:淘宝手机端卖家中心 编辑:程序博客网 时间:2024/05/18 00:18
package PXL.basicsimport sun.security.util.Length/*** * 使用Alt + /可以自动补全 * def 后面就可以看成函数 * 函数是一等公民,可以像变量一样被传递,被赋值;并且函数和变量之间可以赋值传递,可以把函数当成一个变量 * 函数可以被序列化和反序列化 * 1. 函数可以在分布式系统上传递 * 2. 背后是类和对象,可以如变量一样做任何事情 * 关于函数的几个要点: * 1. def关键字定义 * 2. 函数自动进行类型推断,最后一条语句 * 3. 如果函数名称和函数体之间没有等于号= 则函数类型推断失效,此时类型为Unit * 4. 如果函数体中无法推到出函数的类型,必须声明具体的类型 ,例如fib函数 * 5. 函数的参数可以有默认值 * 6. 函数不确定传入的参数个数,使用变长的方式(num:Int*) * 7. 可以使用1 to 10 : _*的方式传入参数 * 8. 可变参数会被收集成为数组,入口函数main的可变参数是以Array[String]方式呈现的 *  */object function001 {  def main(args: Array[String]): Unit = {    hello("spark",23)    println(hello("pxl",23))//函数可以作为参数(变量传递给函数)    println("fib num of 10 is "+fib(10))    println("sum = "+sum( 1 to 10 : _* ))    println("sumall = "+sumall( 1 to 10 : _* ))  }  def hello(name:String,age:Int)={    println("my name is : "+name)    println("my age  is : "+age)    age//此时函数返回的类型为int  }  def fib(n:Long):Long={    if(n<=1) 1    else      fib(n-2)+fib(n-1)  }  def sum(num:Int*)={    var result = 0    for (nu<-num) result += nu//加号和等号不可以有空格    result //没有这句的话不返回任何值  }  //可变参数递归实现累加  def sumall(num:Int*):Int = {    if (num.length==0) 0    else num.head + sumall(num.tail: _*)//tail其余的元素是一个seq,使用:_*变成可以传入的形式  }}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宜春度假村 宜春招商 宜春小吃 江苏宜春 宜春在哪里 宜春旅店 宜春学校 宜春自考 宜春在线 四川宜春 宜春摄影 宜春学 宜春雅思 宜春奶茶 宜春会计 宜春相亲会 宜春旗杆 宜春一中 宜春整形 湖北宜春 宜春青旅 宜春iso 宜春市区 山西宜春 宜春县 宜春学院教务管理系统 宜春住房公积金管理中心 宜春职业技术学院 宜春在哪个省 宜春住房公积金中心 宜春职业学院 宜春市公积金查询入口 江西宜春旅游 宜春公积金查询 宜春人才网就业网 宜春市人民医院 宜春明月山温泉风景名胜区 宜春市住房公积金 宜春到南昌高铁 宜春幼儿师范高等专科学校 宜春市住房公积金查询