packagecom.learn.scala
/**
*
* Scala既是面向对象,也是面向过程的编程语言
* 函数,方法,过程类似,
* 函数:不属于任何类,可以在代码内部定义。
* 方法:属于某个类
* 过程:没有返回值的函数或方法
* Created by zhuqing on 2017/2/23.
*/
objectDay5Fucntion {
defmain(args: Array[String]): Unit = {
println(sum(1,2))//返回1+2的和3
println(times(3))//返回3的2倍6,第二个参数是默认值
println(times(3,3))//返回3的3倍9,第二个参数没有使用默认值,自己设置为3
println(sumAll(1,2))//返回1到2的和
println(sumAll(1,2,3))//返回1到3的和
vala =Array(1,2,3)
/**
* 变长参数不能像Java那样直接使用数组,但可在数组后面加上 :_*,告诉编译器你想把数组当序列使用
*/
println(sumAll(a:_*))
/**
* 使用区间时,也要追加:_*
*/
println(sumAll((1to10):_*))
}
/**
* scala方法与Java类似,但是返回值时可以不用return, 最后一个表达式的值为返回值。
* 也可以不用写返回类型,但是递归时必须写。
* **我个人觉得的scala不用return可能是担心开发者的方法写的太大,因为如果没有return方法行太多的话容易乱,所以开发者就只能把方法写的短一些。
*
*@param a
*@param b
*@return
*/
defsum(a: Int, b: Int) = {
println("a="+ a)
println("b="+ b)
/**
* 不需要return。
* 如果想用也可用,建议不要用
*/
a + b//返回a+b
}
/**
* scala 方法可以设默认参数,类似Flex
*
*@param a
*@param times默认为2
*@return
*/
deftimes(a: Int, times: Int =2): Int = {
println("a="+ a)
println("times="+ times)
a * times
}
/**
* scala 方法的变长参数:类型*,
*
*@param as
*@return
*/
defsumAll(as: Int*): Int = {
varsum =0;
for(a <- as) {
sum += a
}
sum
}
/**
* scala 没有返回值的方法
* 可以返回Unit=Java中的void
* def proce(a:Int ,b:Int):Unit={
* }
* 也可以什么都不返回
* def proce(a:Int ,b:Int){
* }
*@param a
*@param b
*/
defprocedure(a:Int ,b:Int){
println("hello world")
}
}