Scala 之 函数----基础篇

转自:http://blog.csdn.net/jiangpeng59/article/details/48876753

给大家推荐一本书入门很合适:快学scala  网上有很多电子版的。

scala 中的函数是很重要很关键的,这些都是关于关于函数的比较基本的概念以及语法格式。

1.Scala的函数默认都有返回,Unit类似C#里面的void

 
  1. def funtion(): Unit ={  
  2.         //do something  
  3.     }  

以上的无返回值函数可以简写和C#类似


  1. def Funtion(){  
  2.         //do something  
  3.     }  


2.基于简洁的追求,scala可以偷懒的地方就 ,如下是带返回值的3个等价函数


  1. def addA(x:Int):Int={x+100}  
  2. def addB(x:Int)=x+100 //上面的简写  
  3. var addC=(x:Int)=>x+100 //这个类似于Lamda 
  4. hkl:这个其实就是把函数赋给了变量,这也是scala的强大之处,对于函数的操作是十分的灵活多变的。
    (x:Int)=>x+100  //这个是一个匿名函数。

3.递归函数必须声明其返回值的类型,如下面的阶乘


  1. def fac(n:Int):Int=if(n>1) n*fac(n-1else 1  


4.带默认参数的函数,和C#类似


  1. def combine(str1:String,str2:String="I",str3:String="love")=str2+" "+str3+" "+str1  

5.可变参数函数和C#中的param类型类似,下面是求1-5的和


  1. def sum(args:Int*)={  
  2.    var result=0  
  3.    for(arg<-args)result+=arg  
  4.    result  
  5.  }  
  6.    
  7.  def main(args:Array[String]){  
  8.    println(sum(1,2,3,4,5))  
  9.    //println(sum(1 to 5:_*))同上  
  10. hkl:这里我们如果时候直接写1 to  5 是不行的。如果我们希望编译器把他们当做参数序列处理的话加上_*就可以了。
  11.  }  

6.lazy关键字,延迟加载 类似于EF框架的延迟查询。用的时候才会去实例化


  1. lazy val file=Source.fromFile("d:\\t1.txt")  
  2.        for(line<-file.getLines()){  
  3.            println(line)  
  4.        }  
如:file若为空,你不使用file的时候是不会报错的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值