您的位置:首页 > 其它

scala学习第四天

2017-02-24 00:00 148 查看
package com.learn.scala

/**
*
* Scala既是面向对象,也是面向过程的编程语言
* 函数,方法,过程类似,
* 函数:不属于任何类,可以在代码内部定义。
* 方法:属于某个类
* 过程:没有返回值的函数或方法
* Created by zhuqing on 2017/2/23.
*/
object Day5Fucntion {
def main(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的和
val a = Array(1,2,3)

/**
* 变长参数不能像Java那样直接使用数组,但可在数组后面加上 :_*,告诉编译器你想把数组当序列使用
*/
println(sumAll(a:_*))

/**
* 使用区间时,也要追加:_*
*/
println(sumAll((1 to 10):_*))

}

/**
* scala方法与Java类似,但是返回值时可以不用return, 最后一个表达式的值为返回值。
* 也可以不用写返回类型,但是递归时必须写。
* **我个人觉得的scala不用return可能是担心开发者的方法写的太大,因为如果没有return方法行太多的话容易乱,所以开发者就只能把方法写的短一些。
*
* @param a
* @param b
* @return
*/
def sum(a: Int, b: Int) = {
println("a=" + a)
println("b=" + b)

/**
* 不需要return。
* 如果想用也可用,建议不要用
*/
a + b //返回a+b
}

/**
* scala 方法可以设默认参数,类似Flex
*
* @param a
* @param times 默认为2
* @return
*/
def times(a: Int, times: Int = 2): Int = {
println("a=" + a)
println("times=" + times)
a * times
}

/**
* scala 方法的变长参数:类型*,
*
* @param as
* @return
*/
def sumAll(as: Int*): Int = {
var sum = 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
*/
def procedure(a:Int ,b:Int){
println("hello world")
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Scala