scala学习笔记 之 函数

来源:互联网 发布:linux查看进程端口 编辑:程序博客网 时间:2024/06/19 01:38

其实这里的函数 和 C里的函数 意思差不多  和java的方法也差不多  


例如  我们写一个简单的函数  

def fun(a:String,b:Int)={      println(a)      println(b)    }
fun("wy",33)
很简单 传入一个参数a  传入一个 参数 b  分别打印出来   

这里说一下语法   def 代表函数的定义    fun代表 函数名    ()里是参数列表   

java中 是  (String a,int b)   在scala中  顺序有变化  是先写 参数名 然后 冒号 参数类型    ={} 中写函数体   

上面函数是很简单的  分别打印 a和b   在scala中  其实可以省略参数   也就是 如果不传  可以默认一个参数值  

def fun(a:String,b:Int=33)={      println(a)      println(b)    }    fun("name")

也就是在 b参数上 默认=33  这样调用的时候  b参数 可以传也可以不传  如果不传 则b的值按33赋值 

我们还可以改变 传参的顺序   

 def fun(a:String,b:Int=33)={      println(a)      println(b)    }    fun(b=20,a="name")

这样我们在调用的时候   不是按照 a,b这样的一个顺序传递参数的    而是先传 b 再传 a   

在调用的时候  我们指定了 b的值=20  a的值=name  这样就可以了  

上述是没有返回的参数   如果定义有返回值类型的  我们来看  

def fun(a:String,b:Int=33):String={      println(a)      println(b)      "abcde"    }     println(fun(b=20,a="name"))

这样 定义 :String 代表 返回值类型是String   而函数体中 并没有声明return     在scala中  默认最后一条就是返回值   运行下来的结果是  

name
20
abcde


在scala中  也是支持动态参数的  

 def fun(a:Int*):Int={      var sum=0      for(i <- a){        sum+=i      }      sum    }     println(fun(1,2,3,4,5,6,7,8,9,10))
在这里定义了一个累加函数  动态参数 在java中 是 类型后加上 ... 在scala中  类型后加 *  

无论是java还是scala 动态参数 底层都是数组 集合  所以使用的时候还是要循环    调用方式一样  传多少个都行  

原创粉丝点击