转自:http://blog.csdn.net/jiangpeng59/article/details/48876753
给大家推荐一本书入门很合适:快学scala 网上有很多电子版的。
scala 中的函数是很重要很关键的,这些都是关于关于函数的比较基本的概念以及语法格式。
1.Scala的函数默认都有返回,Unit类似C#里面的void
- def funtion(): Unit ={
- //do something
- }
以上的无返回值函数可以简写和C#类似
- def Funtion(){
- //do something
- }
2.基于简洁的追求,scala可以偷懒的地方就 ,如下是带返回值的3个等价函数
- def addA(x:Int):Int={x+100}
- def addB(x:Int)=x+100 //上面的简写
- var addC=(x:Int)=>x+100 //这个类似于Lamda
- hkl:这个其实就是把函数赋给了变量,这也是scala的强大之处,对于函数的操作是十分的灵活多变的。
(x:Int)=>x+100 //这个是一个匿名函数。
3.递归函数必须声明其返回值的类型,如下面的阶乘
- def fac(n:Int):Int=if(n>1) n*fac(n-1) else 1
- def combine(str1:String,str2:String="I",str3:String="love")=str2+" "+str3+" "+str1
5.可变参数函数和C#中的param类型类似,下面是求1-5的和
- def sum(args:Int*)={
- var result=0
- for(arg<-args)result+=arg
- result
- }
- def main(args:Array[String]){
- println(sum(1,2,3,4,5))
- //println(sum(1 to 5:_*))同上
- hkl:这里我们如果时候直接写1 to 5 是不行的。如果我们希望编译器把他们当做参数序列处理的话加上_*就可以了。
- }
6.lazy关键字,延迟加载 类似于EF框架的延迟查询。用的时候才会去实例化
- lazy val file=Source.fromFile("d:\\t1.txt")
- for(line<-file.getLines()){
- println(line)
- }